in client/idrepo/console/src/main/java/org/apache/syncope/client/console/tasks/SchedTaskWizardBuilder.java [153:430]
protected Profile(final SchedTaskTO taskTO) {
AjaxTextFieldPanel name = new AjaxTextFieldPanel(
Constants.NAME_FIELD_NAME, Constants.NAME_FIELD_NAME,
new PropertyModel<>(taskTO, Constants.NAME_FIELD_NAME),
false);
name.addRequiredLabel();
name.setEnabled(true);
add(name);
AjaxTextFieldPanel description = new AjaxTextFieldPanel(
Constants.DESCRIPTION_FIELD_NAME, Constants.DESCRIPTION_FIELD_NAME,
new PropertyModel<>(taskTO, Constants.DESCRIPTION_FIELD_NAME), false);
description.setEnabled(true);
add(description);
AjaxCheckBoxPanel active = new AjaxCheckBoxPanel(
"active", "active", new PropertyModel<>(taskTO, "active"), false);
add(active);
AjaxDropDownChoicePanel<String> jobDelegate = new AjaxDropDownChoicePanel<>(
"jobDelegate", "jobDelegate", new PropertyModel<>(taskTO, "jobDelegate"), false);
jobDelegate.setChoices(taskJobDelegates.getObject());
jobDelegate.addRequiredLabel();
jobDelegate.setEnabled(taskTO.getKey() == null);
add(jobDelegate);
AutoCompleteSettings settings = new AutoCompleteSettings();
settings.setShowCompleteListOnFocusGain(fullRealmsTree);
settings.setShowListOnEmptyInput(fullRealmsTree);
// ------------------------------
// Only for macro tasks
// ------------------------------
WebMarkupContainer macroTaskSpecifics = new WebMarkupContainer("macroTaskSpecifics");
add(macroTaskSpecifics.setRenderBodyOnly(true));
AjaxSearchFieldPanel realm = new AjaxSearchFieldPanel(
"realm", "realm", new PropertyModel<>(taskTO, "realm"), settings) {
private static final long serialVersionUID = -6390474600233486704L;
@Override
protected Iterator<String> getChoices(final String input) {
return (RealmsUtils.checkInput(input)
? searchRealms(input)
: List.<String>of()).iterator();
}
};
if (taskTO instanceof MacroTaskTO macroTask) {
realm.addRequiredLabel();
if (StringUtils.isBlank(macroTask.getRealm())) {
// add a default destination realm if missing in the task
realm.setModelObject(SyncopeConstants.ROOT_REALM);
}
}
macroTaskSpecifics.add(realm);
macroTaskSpecifics.add(new AjaxDropDownChoicePanel<>(
"macroActions", "macroActions", new PropertyModel<>(taskTO, "macroActions"), false).
setChoices(macroActions));
AjaxCheckBoxPanel continueOnError = new AjaxCheckBoxPanel(
"continueOnError", "continueOnError", new PropertyModel<>(taskTO, "continueOnError"), false);
macroTaskSpecifics.add(continueOnError);
AjaxCheckBoxPanel saveExecs = new AjaxCheckBoxPanel(
"saveExecs", "saveExecs", new PropertyModel<>(taskTO, "saveExecs"), false);
macroTaskSpecifics.add(saveExecs);
// ------------------------------
// Only for live sync tasks
// ------------------------------
WebMarkupContainer liveSyncTaskSpecifics = new WebMarkupContainer("liveSyncTaskSpecifics");
add(liveSyncTaskSpecifics.setRenderBodyOnly(true));
boolean isMapped = false;
if (taskTO instanceof LiveSyncTaskTO) {
isMapped = true;
} else {
liveSyncTaskSpecifics.setEnabled(false).setVisible(false);
}
liveSyncTaskSpecifics.add(destinationRealm("liveSyncDestinationRealm", taskTO, settings));
liveSyncTaskSpecifics.add(remediation("liveSyncRemediation", taskTO));
liveSyncTaskSpecifics.add(new AjaxNumberFieldPanel.Builder<Integer>().
min(1).build(
"liveSyncDelaySecondsAcrossInvocations",
"liveSyncDelaySecondsAcrossInvocations",
Integer.class,
new PropertyModel<>(taskTO, "delaySecondsAcrossInvocations")));
AjaxDropDownChoicePanel<String> liveSyncDeltaMapper = new AjaxDropDownChoicePanel<>(
"liveSyncDeltaMapper", "liveSyncDeltaMapper",
new PropertyModel<>(taskTO, "liveSyncDeltaMapper"), false);
liveSyncDeltaMapper.setChoices(liveSyncDeltaMappers.getObject());
liveSyncDeltaMapper.setEnabled(isMapped);
liveSyncDeltaMapper.setRequired(isMapped);
liveSyncTaskSpecifics.add(liveSyncDeltaMapper);
// ------------------------------
// Only for pull tasks
// ------------------------------
WebMarkupContainer pullTaskSpecifics = new WebMarkupContainer("pullTaskSpecifics");
add(pullTaskSpecifics.setRenderBodyOnly(true));
boolean isFiltered = false;
if (taskTO instanceof PullTaskTO pullTask) {
isFiltered = pullTask.getPullMode() == PullMode.FILTERED_RECONCILIATION;
} else {
pullTaskSpecifics.setEnabled(false).setVisible(false);
}
AjaxDropDownChoicePanel<PullMode> pullMode = new AjaxDropDownChoicePanel<>(
"pullMode", "pullMode", new PropertyModel<>(taskTO, "pullMode"), false);
pullMode.setChoices(List.of(PullMode.values()));
if (taskTO instanceof PullTaskTO) {
pullMode.addRequiredLabel();
}
pullMode.setNullValid(!(taskTO instanceof PullTaskTO));
pullTaskSpecifics.add(pullMode);
AjaxDropDownChoicePanel<String> reconFilterBuilder = new AjaxDropDownChoicePanel<>(
"reconFilterBuilder", "reconFilterBuilder",
new PropertyModel<>(taskTO, "reconFilterBuilder"), false);
reconFilterBuilder.setChoices(reconFilterBuilders.getObject());
reconFilterBuilder.setEnabled(isFiltered);
reconFilterBuilder.setRequired(isFiltered);
pullTaskSpecifics.add(reconFilterBuilder);
pullMode.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
private static final long serialVersionUID = -1107858522700306810L;
@Override
protected void onUpdate(final AjaxRequestTarget target) {
reconFilterBuilder.setEnabled(pullMode.getModelObject() == PullMode.FILTERED_RECONCILIATION);
reconFilterBuilder.setRequired(pullMode.getModelObject() == PullMode.FILTERED_RECONCILIATION);
target.add(reconFilterBuilder);
}
});
pullTaskSpecifics.add(destinationRealm("pullDestinationRealm", taskTO, settings));
pullTaskSpecifics.add(remediation("pullRemediation", taskTO));
// ------------------------------
// Only for push tasks
// ------------------------------
WebMarkupContainer pushTaskSpecifics = new WebMarkupContainer("pushTaskSpecifics");
add(pushTaskSpecifics.setRenderBodyOnly(true));
if (!(taskTO instanceof PushTaskTO)) {
pushTaskSpecifics.setEnabled(false).setVisible(false);
}
AjaxSearchFieldPanel sourceRealm = new AjaxSearchFieldPanel(
"sourceRealm", "sourceRealm", new PropertyModel<>(taskTO, "sourceRealm"), settings) {
private static final long serialVersionUID = -6390474600233486704L;
@Override
protected Iterator<String> getChoices(final String input) {
return (RealmsUtils.checkInput(input)
? searchRealms(input)
: List.<String>of()).iterator();
}
};
if (taskTO instanceof PushTaskTO) {
sourceRealm.addRequiredLabel();
}
pushTaskSpecifics.add(sourceRealm);
// ------------------------------
// For push and pull tasks
// ------------------------------
WebMarkupContainer provisioningTaskSpecifics = new WebMarkupContainer("provisioningTaskSpecifics");
add(provisioningTaskSpecifics.setOutputMarkupId(true));
if (taskTO instanceof ProvisioningTaskTO) {
jobDelegate.setEnabled(false).setVisible(false);
macroTaskSpecifics.setEnabled(false).setVisible(false);
} else if (taskTO instanceof MacroTaskTO) {
jobDelegate.setEnabled(false).setVisible(false);
provisioningTaskSpecifics.setEnabled(false).setVisible(false);
} else {
provisioningTaskSpecifics.setEnabled(false).setVisible(false);
macroTaskSpecifics.setEnabled(false).setVisible(false);
}
AjaxPalettePanel<String> actions = new AjaxPalettePanel.Builder<String>().
setAllowMoveAll(true).setAllowOrder(true).
build("actions",
new PropertyModel<>(taskTO, "actions"),
new ListModel<>(taskTO instanceof PushTaskTO
? pushActions.getObject() : inboundActions.getObject()));
provisioningTaskSpecifics.add(actions.setOutputMarkupId(true));
AjaxDropDownChoicePanel<MatchingRule> matchingRule = new AjaxDropDownChoicePanel<>(
"matchingRule", "matchingRule", new PropertyModel<>(taskTO, "matchingRule"), false);
matchingRule.setChoices(List.of(MatchingRule.values()));
provisioningTaskSpecifics.add(matchingRule);
AjaxDropDownChoicePanel<UnmatchingRule> unmatchingRule = new AjaxDropDownChoicePanel<>(
"unmatchingRule", "unmatchingRule", new PropertyModel<>(taskTO, "unmatchingRule"), false);
unmatchingRule.setChoices(List.of(UnmatchingRule.values()));
provisioningTaskSpecifics.add(unmatchingRule);
AjaxCheckBoxPanel performCreate = new AjaxCheckBoxPanel(
"performCreate", "performCreate", new PropertyModel<>(taskTO, "performCreate"), false);
provisioningTaskSpecifics.add(performCreate);
AjaxCheckBoxPanel performUpdate = new AjaxCheckBoxPanel(
"performUpdate", "performUpdate", new PropertyModel<>(taskTO, "performUpdate"), false);
provisioningTaskSpecifics.add(performUpdate);
AjaxCheckBoxPanel performDelete = new AjaxCheckBoxPanel(
"performDelete", "performDelete", new PropertyModel<>(taskTO, "performDelete"), false);
provisioningTaskSpecifics.add(performDelete);
AjaxCheckBoxPanel syncStatus = new AjaxCheckBoxPanel(
"syncStatus", "syncStatus", new PropertyModel<>(taskTO, "syncStatus"), false);
provisioningTaskSpecifics.add(syncStatus);
// Concurrent settings
PropertyModel<ThreadPoolSettings> concurrentSettingsModel =
new PropertyModel<>(taskTO, "concurrentSettings");
AjaxCheckBoxPanel enableConcurrentSettings = new AjaxCheckBoxPanel(
"enableConcurrentSettings", "enableConcurrentSettings", new IModel<Boolean>() {
private static final long serialVersionUID = -7126718045816207110L;
@Override
public Boolean getObject() {
return concurrentSettingsModel.getObject() != null;
}
@Override
public void setObject(final Boolean object) {
// nothing to do
}
});
provisioningTaskSpecifics.add(enableConcurrentSettings.
setVisible(taskTO instanceof ProvisioningTaskTO).setOutputMarkupId(true));
FieldPanel<Integer> poolSize = new AjaxNumberFieldPanel.Builder<Integer>().min(1).build(
"poolSize",
"poolSize",
Integer.class,
new ConcurrentSettingsValueModel(concurrentSettingsModel, "poolSize")).setRequired(true);
poolSize.setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true);
poolSize.setVisible(taskTO instanceof ProvisioningTaskTO
? concurrentSettingsModel.getObject() != null
: false);
provisioningTaskSpecifics.add(poolSize);
enableConcurrentSettings.getField().add(
new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
private static final long serialVersionUID = -1107858522700306810L;
@Override
protected void onUpdate(final AjaxRequestTarget target) {
if (concurrentSettingsModel.getObject() == null) {
concurrentSettingsModel.setObject(new ThreadPoolSettings());
} else {
concurrentSettingsModel.setObject(null);
}
poolSize.setVisible(concurrentSettingsModel.getObject() != null);
target.add(provisioningTaskSpecifics);
}
});
}