use of com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper in project midpoint by Evolveum.
the class ProvenanceMetadataPanel method createMetadataDetailsPanel.
private void createMetadataDetailsPanel(ListItem<PrismContainerValueWrapper<ProvenanceMetadataType>> provenanceListItem, ListItem<PrismContainerValueWrapper<ValueMetadataType>> valueMetadataListItem) {
WebMarkupContainer panel = createAcquisitionPanel(PrismContainerWrapperModel.fromContainerValueWrapper(provenanceListItem.getModel(), ProvenanceMetadataType.F_ACQUISITION));
provenanceListItem.add(panel);
ToggleIconButton<Void> showMore = createShowMoreButton(provenanceListItem.getModel());
provenanceListItem.add(showMore);
IModel<PrismContainerWrapper<Containerable>> detailsModel = createDetailsModel(valueMetadataListItem.getModel());
Label label = new Label(ID_YIELD_HEADER, createDetailsDescriptionModel(detailsModel));
provenanceListItem.add(label);
label.add(new VisibleBehaviour(() -> provenanceListItem.getModelObject().isShowEmpty()));
MetadataContainerPanel<Containerable> defaultPanel = createDefaultPanel(detailsModel, provenanceListItem.getModel());
defaultPanel.add(new VisibleBehaviour(() -> !getModelObject().isShowMetadataDetails() && provenanceListItem.getModelObject().isShowEmpty()));
provenanceListItem.add(defaultPanel);
ItemPanelSettings settings = getSettings().copy();
settings.setVisibilityHandler(w -> createItemVisibilityBehavior(w));
ValueMetadataPanel<ValueMetadataType, PrismContainerValueWrapper<ValueMetadataType>> valueMetadataPanel = new ValueMetadataPanel<>(ID_VALUE_METADATA_DETAILS, valueMetadataListItem.getModel(), settings);
valueMetadataPanel.add(new VisibleBehaviour(() -> getModelObject().isShowMetadataDetails() && provenanceListItem.getModelObject().isShowEmpty()));
provenanceListItem.add(valueMetadataPanel);
}
use of com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper in project midpoint by Evolveum.
the class AssignmentPanel method getAssignmentMenuActions.
private <AH extends FocusType> List<InlineMenuItem> getAssignmentMenuActions() {
List<InlineMenuItem> menuItems = new ArrayList<>();
PrismObject<AH> obj = getMultivalueContainerListPanel().getFocusObject();
try {
boolean isUnassignAuthorized = getParentPage().isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_UNASSIGN_ACTION_URI, AuthorizationPhaseType.REQUEST, obj, null, null, null);
if (isUnassignAuthorized) {
menuItems.add(new ButtonInlineMenuItem(getAssignmentsLimitReachedUnassignTitleModel()) {
private static final long serialVersionUID = 1L;
@Override
public CompositedIconBuilder getIconCompositedBuilder() {
return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_DELETE_MENU_ITEM);
}
@Override
public InlineMenuItemAction initAction() {
return getMultivalueContainerListPanel().createDeleteColumnAction();
}
});
}
} catch (Exception ex) {
LOGGER.error("Couldn't check unassign authorization for the object: {}, {}", obj.getName(), ex.getLocalizedMessage());
if (WebComponentUtil.isAuthorized(AuthorizationConstants.AUTZ_UI_ADMIN_ASSIGN_ACTION_URI)) {
menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.unassign")) {
private static final long serialVersionUID = 1L;
@Override
public CompositedIconBuilder getIconCompositedBuilder() {
return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_DELETE_MENU_ITEM);
}
@Override
public InlineMenuItemAction initAction() {
return getMultivalueContainerListPanel().createDeleteColumnAction();
}
});
}
}
menuItems.add(new ButtonInlineMenuItem(createStringResource("PageBase.button.edit")) {
private static final long serialVersionUID = 1L;
@Override
public CompositedIconBuilder getIconCompositedBuilder() {
return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_EDIT_MENU_ITEM);
}
@Override
public InlineMenuItemAction initAction() {
return getMultivalueContainerListPanel().createEditColumnAction();
}
});
ButtonInlineMenuItem menu = new ButtonInlineMenuItem(createStringResource("AssignmentPanel.viewTargetObject")) {
private static final long serialVersionUID = 1L;
@Override
public CompositedIconBuilder getIconCompositedBuilder() {
return getDefaultCompositedIconBuilder(GuiStyleConstants.CLASS_NAVIGATE_ARROW);
}
@Override
public InlineMenuItemAction initAction() {
return new ColumnMenuAction<PrismContainerValueWrapper<AssignmentType>>() {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
PrismContainerValueWrapper<AssignmentType> assignmentContainer = getRowModel().getObject();
PrismReferenceWrapper<ObjectReferenceType> targetRef;
try {
targetRef = assignmentContainer.findReference(ItemPath.create(AssignmentType.F_TARGET_REF));
} catch (SchemaException e) {
getSession().error("Couldn't show details page. More information provided in log.");
LOGGER.error("Couldn't show details page, no targetRef reference wrapper found: {}", e.getMessage(), e);
target.add(getPageBase().getFeedbackPanel());
return;
}
if (targetRef != null && targetRef.getValues() != null && targetRef.getValues().size() > 0) {
PrismReferenceValueWrapperImpl<ObjectReferenceType> refWrapper = targetRef.getValues().get(0);
if (!StringUtils.isEmpty(refWrapper.getNewValue().getOid())) {
Class<? extends ObjectType> targetClass = ObjectTypes.getObjectTypeFromTypeQName(refWrapper.getRealValue().getType()).getClassDefinition();
WebComponentUtil.dispatchToObjectDetailsPage(targetClass, refWrapper.getNewValue().getOid(), AssignmentPanel.this, false);
}
}
}
};
}
@Override
public boolean isHeaderMenuItem() {
return false;
}
};
menu.setVisibilityChecker((InlineMenuItem.VisibilityChecker) (rowModel, isHeader) -> {
PrismContainerValueWrapper<AssignmentType> assignment = (PrismContainerValueWrapper<AssignmentType>) rowModel.getObject();
if (assignment == null) {
return false;
}
PrismReferenceWrapper<Referencable> target = null;
try {
target = assignment.findReference(AssignmentType.F_TARGET_REF);
} catch (Exception e) {
LOGGER.error("Couldn't find targetRef in assignment");
}
return target != null && !target.isEmpty();
});
menuItems.add(menu);
return menuItems;
}
use of com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper in project midpoint by Evolveum.
the class AssignmentPanel method createAssignmentMoreDataColumn.
private IColumn<PrismContainerValueWrapper<AssignmentType>, String> createAssignmentMoreDataColumn() {
return new AbstractColumn<>(createStringResource("AssignmentPanel.moreData")) {
private static final long serialVersionUID = 1L;
@Override
public void populateItem(Item<ICellPopulator<PrismContainerValueWrapper<AssignmentType>>> cellItem, String componentId, IModel<PrismContainerValueWrapper<AssignmentType>> rowModel) {
AssignmentType assignmentType = rowModel != null && rowModel.getObject() != null ? rowModel.getObject().getRealValue() : null;
cellItem.add(new Label(componentId, AssignmentsUtil.getAssignmentSpecificInfoLabel(assignmentType, AssignmentPanel.this.getPageBase())));
}
};
}
use of com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper in project midpoint by Evolveum.
the class ConstructionAssociationPanel method getShadowReferencesModel.
private IModel<List<ObjectReferenceType>> getShadowReferencesModel(ResourceAssociationDefinition def) {
return new LoadableModel<List<ObjectReferenceType>>() {
private static final long serialVersionUID = 1L;
@Override
public List<ObjectReferenceType> load() {
try {
QName defName = def.getName();
List<ObjectReferenceType> shadowsList = new ArrayList<>();
PrismContainerWrapper<ResourceObjectAssociationType> associationWrapper = getModelObject().findContainer(ConstructionType.F_ASSOCIATION);
associationWrapper.getValues().forEach(associationValueWrapper -> {
if (ValueStatus.DELETED.equals(associationValueWrapper.getStatus())) {
return;
}
PrismContainerValue associationValue = ((PrismContainerValueWrapper) associationValueWrapper).getNewValue();
ResourceObjectAssociationType assoc = (ResourceObjectAssociationType) associationValue.asContainerable();
if (assoc.getOutbound() == null || assoc.getOutbound().getExpression() == null || ExpressionUtil.getShadowRefValue(assoc.getOutbound().getExpression(), ConstructionAssociationPanel.this.getPageBase().getPrismContext()) == null && !ValueStatus.ADDED.equals(associationValueWrapper.getStatus())) {
return;
}
QName assocRef = ItemPathTypeUtil.asSingleNameOrFailNullSafe(assoc.getRef());
if ((defName != null && defName.equals(assocRef)) || (assocRef == null && ValueStatus.ADDED.equals(associationValueWrapper.getStatus()))) {
shadowsList.addAll(ExpressionUtil.getShadowRefValue(assoc.getOutbound().getExpression(), ConstructionAssociationPanel.this.getPageBase().getPrismContext()));
}
});
return shadowsList;
} catch (SchemaException ex) {
// nothing?
}
return null;
}
};
}
use of com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper in project midpoint by Evolveum.
the class ConstructionAssociationPanel method getAssociationsShadowRefs.
private List<ObjectReferenceType> getAssociationsShadowRefs(boolean compareName, QName name) {
List<ObjectReferenceType> shadowsList = new ArrayList<>();
try {
PrismContainerWrapper associationWrapper = getModelObject().findContainer(ConstructionType.F_ASSOCIATION);
associationWrapper.getValues().forEach(associationValueWrapper -> {
if (ValueStatus.DELETED.equals(((PrismContainerValueWrapper) associationValueWrapper).getStatus())) {
return;
}
PrismContainerValue associationValue = ((PrismContainerValueWrapper) associationValueWrapper).getNewValue();
ResourceObjectAssociationType assoc = (ResourceObjectAssociationType) associationValue.asContainerable();
if (assoc == null || assoc.getOutbound() == null || assoc.getOutbound().getExpression() == null || ExpressionUtil.getShadowRefValue(assoc.getOutbound().getExpression(), getPageBase().getPrismContext()) == null) {
return;
}
if (compareName) {
QName assocRef = ItemPathTypeUtil.asSingleNameOrFailNullSafe(assoc.getRef());
if (name != null && name.equals(assocRef)) {
shadowsList.addAll(ExpressionUtil.getShadowRefValue(assoc.getOutbound().getExpression(), getPageBase().getPrismContext()));
}
} else {
shadowsList.addAll(ExpressionUtil.getShadowRefValue(assoc.getOutbound().getExpression(), getPageBase().getPrismContext()));
}
});
} catch (SchemaException ex) {
// nothing?
}
return shadowsList;
}
Aggregations