in client/idrepo/console/src/main/java/org/apache/syncope/client/console/wizards/any/Ownership.java [105:313]
public Ownership(final GroupWrapper groupWrapper, final PageReference pageRef) {
super();
// -----------------------------------------------------------------
// Pre-Authorizations
// -----------------------------------------------------------------
ActionPermissions permissions = new ActionPermissions();
setMetaData(MetaDataRoleAuthorizationStrategy.ACTION_PERMISSIONS, permissions);
permissions.authorize(RENDER, new Roles(IdRepoEntitlement.USER_SEARCH));
// -----------------------------------------------------------------
setTitleModel(new ResourceModel("group.ownership"));
this.wrapper = groupWrapper;
isGroupOwnership = Model.of(groupWrapper.getInnerObject().getGroupOwner() != null);
BootstrapToggleConfig config = new BootstrapToggleConfig().
withOnStyle(BootstrapToggleConfig.Style.info).
withOffStyle(BootstrapToggleConfig.Style.warning).
withSize(BootstrapToggleConfig.Size.mini);
add(new BootstrapToggle("ownership", new Model<>() {
private static final long serialVersionUID = 6062041315055645807L;
@Override
public Boolean getObject() {
return isGroupOwnership.getObject();
}
}, config) {
private static final long serialVersionUID = 2969634208049189343L;
@Override
protected IModel<String> getOffLabel() {
return Model.of("USER Owner");
}
@Override
protected IModel<String> getOnLabel() {
return Model.of("GROUP Owner");
}
@Override
protected CheckBox newCheckBox(final String id, final IModel<Boolean> model) {
final CheckBox checkBox = super.newCheckBox(id, model);
checkBox.add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
private static final long serialVersionUID = 18235445704320L;
@Override
protected void onUpdate(final AjaxRequestTarget target) {
isGroupOwnership.setObject(!isGroupOwnership.getObject());
if (isGroupOwnership.getObject()) {
ownerContainer.addOrReplace(groupSearchFragment);
groupDirectoryPanel.search(null, target);
} else {
ownerContainer.addOrReplace(userSearchFragment);
userDirectoryPanel.search(null, target);
}
target.add(ownerContainer);
}
});
return checkBox;
}
});
ownerContainer = new WebMarkupContainer("ownerContainer");
ownerContainer.setOutputMarkupId(true);
add(ownerContainer);
groupSearchFragment = new Fragment("search", "groupSearchFragment", this);
groupSearchPanel = new GroupSearchPanel.Builder(
new ListModel<>(new ArrayList<>()), pageRef).required(false).enableSearch(Ownership.this).
build("groupsearch");
groupSearchFragment.add(groupSearchPanel.setRenderBodyOnly(true));
AnyTypeTO anyTypeTO = anyTypeRestClient.read(AnyTypeKind.GROUP.name());
groupDirectoryPanel = GroupSelectionDirectoryPanel.class.cast(new GroupSelectionDirectoryPanel.Builder(
anyTypeClassRestClient.list(anyTypeTO.getClasses()),
groupRestClient,
anyTypeTO.getKey(),
pageRef).build("searchResult"));
groupSearchFragment.add(groupDirectoryPanel);
userSearchFragment = new Fragment("search", "userSearchFragment", this);
userSearchPanel = UserSearchPanel.class.cast(new UserSearchPanel.Builder(
new ListModel<>(new ArrayList<>()), pageRef).required(false).enableSearch(Ownership.this).
build("usersearch"));
userSearchFragment.add(userSearchPanel.setRenderBodyOnly(true));
anyTypeTO = anyTypeRestClient.read(AnyTypeKind.USER.name());
userDirectoryPanel = UserSelectionDirectoryPanel.class.cast(new UserSelectionDirectoryPanel.Builder(
anyTypeClassRestClient.list(anyTypeTO.getClasses()), userRestClient, anyTypeTO.getKey(), pageRef).
build("searchResult"));
userSearchFragment.add(userDirectoryPanel);
if (isGroupOwnership.getObject()) {
ownerContainer.add(groupSearchFragment);
} else {
ownerContainer.add(userSearchFragment);
}
AjaxTextFieldPanel userOwner = new AjaxTextFieldPanel(
"userOwner", "userOwner", new PropertyModel<>(groupWrapper.getInnerObject(), "userOwner") {
private static final long serialVersionUID = -3743432456095828573L;
@Override
public String getObject() {
if (groupWrapper.getInnerObject().getUserOwner() == null) {
return StringUtils.EMPTY;
}
UserTO userTO = userRestClient.read(groupWrapper.getInnerObject().getUserOwner());
if (userTO == null) {
return StringUtils.EMPTY;
}
return String.format("[%s] %s", userTO.getKey(), userTO.getUsername());
}
@Override
public void setObject(final String object) {
if (StringUtils.isBlank(object)) {
groupWrapper.getInnerObject().setUserOwner(null);
} else {
Matcher matcher = owner.matcher(object);
if (matcher.matches()) {
groupWrapper.getInnerObject().setUserOwner(matcher.group(1));
}
}
}
}, false);
userOwner.setPlaceholder("userOwner");
userOwner.hideLabel();
userOwner.setReadOnly(true).setOutputMarkupId(true);
userSearchFragment.add(userOwner);
IndicatingAjaxLink<Void> userOwnerReset = new IndicatingAjaxLink<>("userOwnerReset") {
private static final long serialVersionUID = -7978723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target) {
send(Ownership.this, Broadcast.EXACT, new GroupSelectionDirectoryPanel.ItemSelection<>(target, null));
}
@Override
public String getAjaxIndicatorMarkupId() {
return Constants.VEIL_INDICATOR_MARKUP_ID;
}
};
userSearchFragment.add(userOwnerReset);
AjaxTextFieldPanel groupOwner = new AjaxTextFieldPanel(
"groupOwner", "groupOwner", new PropertyModel<>(groupWrapper.getInnerObject(), "groupOwner") {
private static final long serialVersionUID = -3743432456095828573L;
@Override
public String getObject() {
if (groupWrapper.getInnerObject().getGroupOwner() == null) {
return StringUtils.EMPTY;
} else {
GroupTO groupTO = groupRestClient.read(groupWrapper.getInnerObject().getGroupOwner());
if (groupTO == null) {
return StringUtils.EMPTY;
} else {
return String.format("[%s] %s", groupTO.getKey(), groupTO.getName());
}
}
}
@Override
public void setObject(final String object) {
if (StringUtils.isBlank(object)) {
groupWrapper.getInnerObject().setGroupOwner(null);
} else {
final Matcher matcher = owner.matcher(object);
if (matcher.matches()) {
groupWrapper.getInnerObject().setGroupOwner(matcher.group(1));
}
}
}
}, false);
groupOwner.setPlaceholder("groupOwner");
groupOwner.hideLabel();
groupOwner.setReadOnly(true).setOutputMarkupId(true);
groupSearchFragment.add(groupOwner);
IndicatingAjaxLink<Void> groupOwnerReset = new IndicatingAjaxLink<>("groupOwnerReset") {
private static final long serialVersionUID = -7978723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target) {
send(Ownership.this, Broadcast.EXACT, new GroupSelectionDirectoryPanel.ItemSelection<>(target, null));
}
@Override
public String getAjaxIndicatorMarkupId() {
return Constants.VEIL_INDICATOR_MARKUP_ID;
}
};
groupSearchFragment.add(groupOwnerReset);
}