Skip to content

Commit

Permalink
fix for refreshing object type value in wizard panels
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Mar 21, 2023
1 parent 0b26e13 commit a9e525c
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import java.util.List;

import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
Expand Down Expand Up @@ -272,20 +273,21 @@ public Collection<ObjectDeltaOperation<? extends ObjectType>> saveOrPreviewPerfo

private void reloadObject(OperationResult result, Collection<ObjectDeltaOperation<? extends ObjectType>> executedDeltas, AjaxRequestTarget target) {
if (!result.isError()) {
if (executedDeltas != null) {
String resourceOid = ObjectDeltaOperation.findFocusDeltaOidInCollection(executedDeltas);
if (resourceOid != null) {
Task task = createSimpleTask("load resource after save");
@Nullable PrismObject<O> object = WebModelServiceUtils.loadObject(
getType(),
resourceOid,
AbstractPageObjectDetails.this,
task,
task.getResult());
if (object != null) {
getObjectDetailsModels().reset();
getObjectDetailsModels().reloadPrismObjectModel(object);
}
String objectOid = getPrismObject() != null ? getPrismObject().getOid() : null;
if (StringUtils.isEmpty(objectOid) && executedDeltas != null) {
objectOid = ObjectDeltaOperation.findFocusDeltaOidInCollection(executedDeltas);
}
if (objectOid != null) {
Task task = createSimpleTask("load resource after save");
@Nullable PrismObject<O> object = WebModelServiceUtils.loadObject(
getType(),
objectOid,
AbstractPageObjectDetails.this,
task,
task.getResult());
if (object != null) {
getObjectDetailsModels().reset();
getObjectDetailsModels().reloadPrismObjectModel(object);
}
}

Expand All @@ -306,11 +308,11 @@ protected void postProcessResult(OperationResult result,
}
}

protected void navigateAction(){
protected void navigateAction() {
Class<? extends PageBase> objectListPage = WebComponentUtil.getObjectListPage(getType());
if(!canRedirectBack() && WebComponentUtil.getObjectListPage(getType()) != null){
if (!canRedirectBack() && WebComponentUtil.getObjectListPage(getType()) != null) {
navigateToNext(objectListPage);
}else {
} else {
redirectBack();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ protected void initLayout() {
protected void onBeforeRender() {
super.onBeforeRender();
if (isShowObjectTypePreview()) {
addOrReplace(createChoiceFragment(createObjectTypePreview(getValueModel())));
addOrReplace(createChoiceFragment(createObjectTypePreview()));
}
}

Expand All @@ -69,62 +69,66 @@ public void setShowObjectTypePreview(boolean showObjectTypePreview) {
}

private ResourceObjectTypeBasicWizardPanel createNewResourceObjectTypeWizard() {
WizardPanelHelper helper = new WizardPanelHelper<>(getAssignmentHolderModel(), getValueModel()) {
WizardPanelHelper<ResourceObjectTypeDefinitionType, ResourceDetailsModel> helper =
new WizardPanelHelper<>(getAssignmentHolderModel()) {
@Override
public void onExitPerformed(AjaxRequestTarget target) {
ResourceObjectTypeWizardPanel.this.onExitPerformed(target);
}

@Override
public IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> getValueModel() {
return ResourceObjectTypeWizardPanel.this.getValueModel();
}

@Override
public OperationResult onSaveObjectPerformed(AjaxRequestTarget target) {
OperationResult result = ResourceObjectTypeWizardPanel.this.onSavePerformed(target);
if (result != null && !result.isError()) {
refreshValueModel();
showObjectTypePreviewFragment(getValueModel(), target);
showObjectTypePreviewFragment(target);
}
return result;
}
};
return new ResourceObjectTypeBasicWizardPanel(getIdOfChoicePanel(), helper);
}

private void showObjectTypePreviewFragment(
IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> model, AjaxRequestTarget target) {
showChoiceFragment(target, createObjectTypePreview(model));
private void showObjectTypePreviewFragment(AjaxRequestTarget target) {
showChoiceFragment(target, createObjectTypePreview());
}

private ResourceObjectTypeWizardPreviewPanel createObjectTypePreview(
IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> model) {
return new ResourceObjectTypeWizardPreviewPanel(getIdOfChoicePanel(), createHelper(model)) {
private ResourceObjectTypeWizardPreviewPanel createObjectTypePreview() {
return new ResourceObjectTypeWizardPreviewPanel(getIdOfChoicePanel(), createHelper()) {
@Override
protected void onTileClickPerformed(ResourceObjectTypePreviewTileType value, AjaxRequestTarget target) {
switch (value) {
case BASIC:
showResourceObjectTypeBasic(target, getValueModel());
showResourceObjectTypeBasic(target);
break;
case PREVIEW_DATA:
showTableForDataOfCurrentlyObjectType(target, getValueModel());
showTableForDataOfCurrentlyObjectType(target);
break;
case ATTRIBUTE_MAPPING:
showTableForAttributes(target, getValueModel());
showTableForAttributes(target);
break;
case SYNCHRONIZATION_CONFIG:
showSynchronizationConfigWizard(target, getValueModel());
showSynchronizationConfigWizard(target);
break;
case CORRELATION_CONFIG:
showCorrelationItemsTable(target, getValueModel());
showCorrelationItemsTable(target);
break;
case CREDENTIALS:
showCredentialsWizardPanel(target, getValueModel());
showCredentialsWizardPanel(target);
break;
case ASSOCIATIONS:
showAssociationsWizard(target, getValueModel());
showAssociationsWizard(target);
break;
case ACTIVATION:
showActivationsWizard(target, getValueModel());
showActivationsWizard(target);
break;
case CAPABILITIES_CONFIG:
showCapabilitiesConfigWizard(target, getValueModel());
showCapabilitiesConfigWizard(target);
break;
}
}
Expand All @@ -137,12 +141,18 @@ protected void onExitPerformed(AjaxRequestTarget target) {
};
}

private void showResourceObjectTypeBasic(AjaxRequestTarget target, IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
private void showResourceObjectTypeBasic(AjaxRequestTarget target) {

WizardPanelHelper helper = new WizardPanelHelper<>(getAssignmentHolderModel(), valueModel) {
WizardPanelHelper<ResourceObjectTypeDefinitionType, ResourceDetailsModel> helper =
new WizardPanelHelper<>(getAssignmentHolderModel()) {
@Override
public void onExitPerformed(AjaxRequestTarget target) {
showObjectTypePreviewFragment(getValueModel(), target);
showObjectTypePreviewFragment(target);
}

@Override
public IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> getValueModel() {
return ResourceObjectTypeWizardPanel.this.getValueModel();
}

@Override
Expand All @@ -162,71 +172,65 @@ public OperationResult onSaveObjectPerformed(AjaxRequestTarget target) {
);
}

private void showCredentialsWizardPanel(AjaxRequestTarget target, IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
private void showCredentialsWizardPanel(AjaxRequestTarget target) {
showChoiceFragment(
target,
new CredentialsWizardPanel(getIdOfChoicePanel(), createHelper(valueModel))
new CredentialsWizardPanel(getIdOfChoicePanel(), createHelper())
);
}

private void showCorrelationItemsTable(
AjaxRequestTarget target, IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
private void showCorrelationItemsTable(AjaxRequestTarget target) {
showChoiceFragment(
target,
new CorrelationWizardPanel(getIdOfChoicePanel(), createHelper(valueModel))
new CorrelationWizardPanel(getIdOfChoicePanel(), createHelper())
);
}

private void showCapabilitiesConfigWizard(
AjaxRequestTarget target, IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
private void showCapabilitiesConfigWizard(AjaxRequestTarget target) {
showChoiceFragment(
target,
new CapabilitiesWizardPanel(getIdOfChoicePanel(), createHelper(valueModel))
new CapabilitiesWizardPanel(getIdOfChoicePanel(), createHelper())
);
}

private void showSynchronizationConfigWizard(
AjaxRequestTarget target,
IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
private void showSynchronizationConfigWizard(AjaxRequestTarget target) {
showWizardFragment(
target,
new SynchronizationWizardPanel(getIdOfWizardPanel(), createHelper(valueModel))
new SynchronizationWizardPanel(getIdOfWizardPanel(), createHelper())
);
}

private void showActivationsWizard(
AjaxRequestTarget target,
IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
private void showActivationsWizard(AjaxRequestTarget target) {
showWizardFragment(
target,
new ActivationsWizardPanel(getIdOfWizardPanel(), createHelper(valueModel))
new ActivationsWizardPanel(getIdOfWizardPanel(), createHelper())
);
}

private void showAssociationsWizard(
AjaxRequestTarget target,
IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
private void showAssociationsWizard(AjaxRequestTarget target) {
showChoiceFragment(
target,
new AssociationsWizardPanel(getIdOfChoicePanel(), createHelper(valueModel))
new AssociationsWizardPanel(getIdOfChoicePanel(), createHelper())
);
}

private void showTableForAttributes(
AjaxRequestTarget target,
IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
private void showTableForAttributes(AjaxRequestTarget target) {
showChoiceFragment(
target,
new AttributeMappingWizardPanel(getIdOfChoicePanel(), createHelper(valueModel))
new AttributeMappingWizardPanel(getIdOfChoicePanel(), createHelper())
);
}

private WizardPanelHelper<ResourceObjectTypeDefinitionType, ResourceDetailsModel> createHelper(
IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
return new WizardPanelHelper<>(getAssignmentHolderModel(), valueModel) {
private WizardPanelHelper<ResourceObjectTypeDefinitionType, ResourceDetailsModel> createHelper() {
return new WizardPanelHelper<>(getAssignmentHolderModel()) {
@Override
public void onExitPerformed(AjaxRequestTarget target) {
showObjectTypePreviewFragment(getValueModel(), target);
showObjectTypePreviewFragment(target);
}

@Override
public IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> getValueModel() {
return getHelper().getValueModel();
}

@Override
Expand All @@ -240,16 +244,15 @@ public OperationResult onSaveObjectPerformed(AjaxRequestTarget target) {
};
}

private void showTableForDataOfCurrentlyObjectType(
AjaxRequestTarget target, IModel<PrismContainerValueWrapper<ResourceObjectTypeDefinitionType>> valueModel) {
private void showTableForDataOfCurrentlyObjectType(AjaxRequestTarget target) {
showChoiceFragment(target, new PreviewResourceObjectTypeDataWizardPanel(
getIdOfChoicePanel(),
getAssignmentHolderModel(),
valueModel) {
ResourceObjectTypeWizardPanel.this.getValueModel()) {
@Override
protected void onExitPerformed(AjaxRequestTarget target) {
super.onExitPerformed(target);
showObjectTypePreviewFragment(getResourceObjectType(), target);
showObjectTypePreviewFragment(target);
}
});
}
Expand Down

0 comments on commit a9e525c

Please sign in to comment.