in client/idrepo/console/src/main/java/org/apache/syncope/client/console/panels/GroupDirectoryPanel.java [239:456]
public ActionsPanel<GroupTO> getActions(final IModel<GroupTO> model) {
ActionsPanel<GroupTO> actions = super.getActions(model);
actions.add(new ActionLink<>() {
private static final long serialVersionUID = -7978723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
send(GroupDirectoryPanel.this, Broadcast.EXACT,
new AjaxWizard.EditItemActionEvent<>(new GroupWrapper(
restClient.read(model.getObject().getKey())), target));
}
}, ActionType.EDIT,
String.format("%s,%s", IdRepoEntitlement.GROUP_READ, IdRepoEntitlement.GROUP_UPDATE)).
setRealms(realm, model.getObject().getDynRealms());
actions.add(new ActionLink<>() {
private static final long serialVersionUID = 6242834621660352855L;
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
target.add(typeExtensionsModal.setContent(new TypeExtensionDirectoryPanel(
typeExtensionsModal, model.getObject(), pageRef)));
typeExtensionsModal.header(new StringResourceModel("typeExtensions", model));
typeExtensionsModal.show(true);
}
}, ActionType.TYPE_EXTENSIONS, IdRepoEntitlement.GROUP_UPDATE).
setRealms(realm, model.getObject().getDynRealms());
actions.add(new ActionLink<>() {
private static final long serialVersionUID = -7978723352517770645L;
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
membersTogglePanel.setHeader(target, model.getObject().getName());
membersTogglePanel.setTargetObject(model.getObject());
membersTogglePanel.toggle(target, model.getObject(), true);
}
@Override
public boolean isIndicatorEnabled() {
return false;
}
}, ActionType.MEMBERS,
String.format("%s,%s", IdRepoEntitlement.GROUP_READ, IdRepoEntitlement.GROUP_UPDATE)).
setRealms(realm, model.getObject().getDynRealms());
ActionLink<GroupTO> provisionMembers = new ActionLink<GroupTO>() {
private static final long serialVersionUID = -7978723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
try {
groupRestClient.provisionMembers(model.getObject().getKey(), ProvisionAction.PROVISION);
SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
target.add(container);
} catch (SyncopeClientException e) {
LOG.error("While provisioning members of group {}", model.getObject().getKey(), e);
SyncopeConsoleSession.get().onException(e);
}
((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
}
}.confirmMessage("confirmProvisionMembers");
actions.add(
provisionMembers,
ActionType.PROVISION_MEMBERS,
String.format("%s,%s", IdRepoEntitlement.TASK_CREATE, IdRepoEntitlement.TASK_EXECUTE),
true).setRealm(realm);
ActionLink<GroupTO> deprovisionMembers = new ActionLink<GroupTO>() {
private static final long serialVersionUID = -7978723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
try {
groupRestClient.provisionMembers(model.getObject().getKey(), ProvisionAction.DEPROVISION);
SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
target.add(container);
} catch (SyncopeClientException e) {
LOG.error("While provisioning members of group {}", model.getObject().getKey(), e);
SyncopeConsoleSession.get().onException(e);
}
((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
}
}.confirmMessage("confirmDeprovisionMembers");
actions.add(
deprovisionMembers,
ActionType.DEPROVISION_MEMBERS,
String.format("%s,%s", IdRepoEntitlement.TASK_CREATE, IdRepoEntitlement.TASK_EXECUTE),
true).setRealm(realm);
SyncopeWebApplication.get().getAnyDirectoryPanelAdditionalActionLinksProvider().get(
model.getObject(),
realm,
altDefaultModal,
getString("any.edit", new Model<>(new GroupWrapper(model.getObject()))),
this,
pageRef).forEach(actions::add);
actions.add(new ActionLink<>() {
private static final long serialVersionUID = -7978723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
target.add(utilityModal.setContent(new AnyPropagationTasks(
utilityModal, AnyTypeKind.GROUP, model.getObject().getKey(), pageRef)));
utilityModal.header(new StringResourceModel("any.propagation.tasks", model));
utilityModal.show(true);
}
}, ActionType.PROPAGATION_TASKS, IdRepoEntitlement.TASK_LIST);
actions.add(new ActionLink<>() {
private static final long serialVersionUID = -7978723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
target.add(utilityModal.setContent(
new NotificationTasks(AnyTypeKind.GROUP, model.getObject().getKey(), pageRef)));
utilityModal.header(new StringResourceModel("any.notification.tasks", model));
utilityModal.show(true);
}
}, ActionType.NOTIFICATION_TASKS, IdRepoEntitlement.TASK_LIST);
actions.add(new ActionLink<>() {
private static final long serialVersionUID = -2878723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
model.setObject(restClient.read(model.getObject().getKey()));
target.add(altDefaultModal.setContent(new AuditHistoryModal<>(
OpEvent.CategoryType.LOGIC,
"GroupLogic",
model.getObject(),
IdRepoEntitlement.GROUP_UPDATE,
auditRestClient) {
private static final long serialVersionUID = -5819724478921691835L;
@Override
protected void restore(final String json, final AjaxRequestTarget target) {
GroupTO original = model.getObject();
try {
GroupTO updated = MAPPER.readValue(json, GroupTO.class);
GroupUR updateReq = AnyOperations.diff(updated, original, false);
ProvisioningResult<GroupTO> result =
restClient.update(original.getETagValue(), updateReq);
model.getObject().setLastChangeDate(result.getEntity().getLastChangeDate());
SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
target.add(container);
} catch (Exception e) {
LOG.error("While restoring group {}", model.getObject().getKey(), e);
SyncopeConsoleSession.get().onException(e);
}
((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
}
}));
altDefaultModal.header(new Model<>(
getString("auditHistory.title", new Model<>(new GroupWrapper(model.getObject())))));
altDefaultModal.show(true);
}
}, ActionType.VIEW_AUDIT_HISTORY,
String.format("%s,%s", IdRepoEntitlement.GROUP_READ, IdRepoEntitlement.AUDIT_LIST)).
setRealms(realm, model.getObject().getDynRealms());
actions.add(new ActionLink<>() {
private static final long serialVersionUID = 6242834621660352855L;
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
GroupTO clone = SerializationUtils.clone(model.getObject());
clone.setKey(null);
send(GroupDirectoryPanel.this, Broadcast.EXACT,
new AjaxWizard.NewItemActionEvent<>(new GroupWrapper(clone), target));
}
@Override
protected boolean statusCondition(final GroupTO modelObject) {
return realm.startsWith(SyncopeConstants.ROOT_REALM);
}
}, ActionType.CLONE, IdRepoEntitlement.GROUP_CREATE).setRealm(realm);
actions.add(new ActionLink<>() {
private static final long serialVersionUID = -7978723352517770644L;
@Override
public void onClick(final AjaxRequestTarget target, final GroupTO ignore) {
try {
restClient.delete(model.getObject().getETagValue(), model.getObject().getKey());
SyncopeConsoleSession.get().success(getString(Constants.OPERATION_SUCCEEDED));
target.add(container);
} catch (SyncopeClientException e) {
LOG.error("While deleting group {}", model.getObject().getKey(), e);
SyncopeConsoleSession.get().onException(e);
}
((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
}
@Override
protected boolean statusCondition(final GroupTO modelObject) {
return realm.startsWith(SyncopeConstants.ROOT_REALM);
}
}, ActionType.DELETE, IdRepoEntitlement.GROUP_DELETE, true).setRealm(realm);
return actions;
}