use of com.evolveum.midpoint.web.component.progress.ProgressReportActivityDto in project midpoint by Evolveum.
the class DefaultGuiProgressListener method onProgressAchieved.
@Override
public void onProgressAchieved(ModelContext modelContext, ProgressInformation progressInformation) {
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("onProgressAchieved: {}\n, modelContext = \n{}", new Object[] { progressInformation.debugDump(), modelContext.debugDump(2) });
}
if (progressDto == null) {
// should not occur
LOGGER.error("No progressDto, exiting");
return;
}
if (StringUtils.isNotEmpty(progressInformation.getMessage())) {
progressDto.log(progressInformation.getMessage());
}
List<ProgressReportActivityDto> progressReportActivities = progressDto.getProgressReportActivities();
if (progressInformation != null) {
ProgressReportActivityDto si = findRelevantStatusItem(progressReportActivities, progressInformation);
if (si == null) {
progressDto.add(createStatusItem(progressInformation, modelContext));
} else {
updateStatusItemState(si, progressInformation, modelContext);
}
}
addExpectedStatusItems(progressReportActivities, modelContext);
}
use of com.evolveum.midpoint.web.component.progress.ProgressReportActivityDto in project midpoint by Evolveum.
the class DefaultGuiProgressListener method createStatusItem.
private ProgressReportActivityDto createStatusItem(ProgressInformation progressInformation, ModelContext modelContext) {
ProgressReportActivityDto si = new ProgressReportActivityDto();
updateStatusItemState(si, progressInformation, modelContext);
return si;
}
use of com.evolveum.midpoint.web.component.progress.ProgressReportActivityDto in project midpoint by Evolveum.
the class ChangePasswordPanel method initColumns.
private List<IColumn<PasswordAccountDto, String>> initColumns() {
List<IColumn<PasswordAccountDto, String>> columns = new ArrayList<>();
columns.add(new CheckBoxColumn<>(Model.of(""), Selectable.F_SELECTED) {
@Override
protected IModel<Boolean> getEnabled(IModel<PasswordAccountDto> rowModel) {
return () -> {
PasswordAccountDto passwordAccountDto = rowModel.getObject();
if (!passwordAccountDto.isMidpoint() && !passwordAccountDto.isPasswordCapabilityEnabled()) {
passwordAccountDto.setSelected(false);
return false;
}
if (CredentialsPropagationUserControlType.ONLY_MAPPING.equals(getModelObject().getPropagation())) {
if (!passwordAccountDto.isMidpoint() && !passwordAccountDto.isPasswordOutbound()) {
passwordAccountDto.setSelected(false);
}
return false;
}
if (passwordAccountDto.isMidpoint() && CredentialsPropagationUserControlType.IDENTITY_MANAGER_MANDATORY.equals(getModelObject().getPropagation())) {
return false;
}
if (!passwordAccountDto.isMidpoint() && midpointAccountSelected.getObject() && passwordAccountDto.isPasswordOutbound()) {
passwordAccountDto.setSelected(true);
return false;
}
return true;
};
}
@Override
protected void processBehaviourOfCheckBox(IsolatedCheckBoxPanel check, IModel<PasswordAccountDto> rowModel) {
super.processBehaviourOfCheckBox(check, rowModel);
IModel<String> titleModel = () -> {
PasswordAccountDto passwordAccountDto = rowModel.getObject();
if (!getEnabled(rowModel).getObject()) {
String key;
if (!passwordAccountDto.isMidpoint() && !passwordAccountDto.isPasswordCapabilityEnabled()) {
key = "ChangePasswordPanel.legendMessage.no.password.capability";
} else {
key = "ChangePasswordPanel.legendMessage.policy";
}
return createStringResource(key).getString();
}
return "";
};
check.add(AttributeAppender.append("title", titleModel));
}
@Override
protected void onUpdateRow(AjaxRequestTarget target, DataTable table, IModel<PasswordAccountDto> rowModel, IModel<Boolean> selected) {
super.onUpdateRow(target, table, rowModel, selected);
if (rowModel.getObject().isMidpoint()) {
table.visitChildren(IsolatedCheckBoxPanel.class, (IVisitor<IsolatedCheckBoxPanel, IsolatedCheckBoxPanel>) (panel, iVisit) -> {
target.add(panel);
});
}
}
});
columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.name")) {
private static final long serialVersionUID = 1L;
@Override
public void populateItem(Item<ICellPopulator<PasswordAccountDto>> item, String componentId, final IModel<PasswordAccountDto> rowModel) {
item.add(new Label(componentId, new IModel<>() {
private static final long serialVersionUID = 1L;
@Override
public String getObject() {
PasswordAccountDto dto = rowModel.getObject();
return dto.getDisplayName();
}
}));
}
});
columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.resourceName")) {
private static final long serialVersionUID = 1L;
@Override
public void populateItem(Item<ICellPopulator<PasswordAccountDto>> item, String componentId, final IModel<PasswordAccountDto> rowModel) {
IModel<String> helpModel = () -> {
String title = "";
if (!rowModel.getObject().isMidpoint() && !rowModel.getObject().isPasswordCapabilityEnabled()) {
title = createStringResource("ChangePasswordPanel.legendMessage.no.password.capability").getString();
}
if (rowModel.getObject().isMaintenanceState()) {
title = title + (StringUtils.isEmpty(title) ? "" : " ") + createStringResource("ChangePasswordPanel.legendMessage.maintenance").getString();
}
return title;
};
item.add(new LabelWithHelpPanel(componentId, new IModel<>() {
private static final long serialVersionUID = 1L;
@Override
public String getObject() {
PasswordAccountDto dto = rowModel.getObject();
return dto.getResourceName();
}
}) {
@Override
protected IModel<String> getHelpModel() {
return helpModel;
}
});
}
});
IconColumn enabled = new IconColumn<PasswordAccountDto>(createStringResource("ChangePasswordPanel.enabled")) {
@Override
protected DisplayType getIconDisplayType(IModel<PasswordAccountDto> rowModel) {
String cssClass = "fa fa-question text-info";
String tooltip = "ActivationStatusType.null";
if (rowModel != null && rowModel.getObject() != null && rowModel.getObject().isEnabled() != null) {
if (rowModel.getObject().isEnabled()) {
cssClass = GuiStyleConstants.CLASS_APPROVAL_OUTCOME_ICON_APPROVED_COLORED;
tooltip = "ActivationStatusType.ENABLED";
} else {
cssClass = GuiStyleConstants.CLASS_APPROVAL_OUTCOME_ICON_REJECTED_COLORED;
tooltip = "ActivationStatusType.DISABLED";
}
}
return GuiDisplayTypeUtil.createDisplayType(cssClass + " fa-fw fa-lg", "", createStringResource(tooltip).getString());
}
@Override
public String getCssClass() {
return "col-lg-1";
}
};
columns.add(enabled);
columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.passwordValidation")) {
private static final long serialVersionUID = 1L;
@Override
public void populateItem(Item<ICellPopulator<PasswordAccountDto>> cellItem, String componentId, IModel<PasswordAccountDto> rowModel) {
IModel<List<StringLimitationResult>> limitationsModel = () -> {
String policyOid = rowModel.getObject().getPasswordValuePolicyOid();
if (StringUtils.isEmpty(policyOid) || !getModelObject().getPasswordPolicies().containsKey(policyOid)) {
return new ArrayList<>();
}
if (limitationsByPolicyOid.containsKey(policyOid)) {
return limitationsByPolicyOid.get(policyOid);
}
ValuePolicyType policyType = getModelObject().getPasswordPolicies().get(policyOid);
PrismObject<? extends ObjectType> object = rowModel.getObject().getObject();
List<StringLimitationResult> limitations = getPasswordPanel().getLimitationsForActualPassword(policyType, object);
limitationsByPolicyOid.put(policyOid, limitations);
return limitations;
};
PasswordPolicyValidationPanel validationPanel = new PasswordPolicyValidationPanel(componentId, limitationsModel);
validationPanel.add(new VisibleEnableBehaviour() {
@Override
public boolean isVisible() {
return !limitationsModel.getObject().isEmpty();
}
});
cellItem.add(validationPanel);
}
@Override
public String getCssClass() {
return "col-lg-2";
}
});
columns.add(new AbstractColumn<PasswordAccountDto, String>(createStringResource("ChangePasswordPanel.propagationResult")) {
private static final long serialVersionUID = 1L;
@Override
public void populateItem(Item<ICellPopulator<PasswordAccountDto>> cellItem, String componentId, IModel<PasswordAccountDto> rowModel) {
LoadableModel<OperationResult> resultStatusModel = new LoadableModel<OperationResult>() {
@Override
protected OperationResult load() {
if (getModelObject().getProgress() == null || getModelObject().getProgress().getProgressReportActivities().isEmpty()) {
return null;
}
for (ProgressReportActivityDto progressActivity : getModelObject().getProgress().getProgressReportActivities()) {
if (rowModel.getObject().isSelected() && progressActivity.getStatus() != null && rowModel.getObject().isMidpoint() && (ProgressInformation.ActivityType.FOCUS_OPERATION.equals(progressActivity.getActivityType()) || (ProgressInformation.ActivityType.PROJECTOR.equals(progressActivity.getActivityType()) && !OperationResultStatusType.SUCCESS.equals(progressActivity.getStatus())))) {
return progressActivity.getOperationResult();
} else if (progressActivity.getStatus() != null && !rowModel.getObject().isMidpoint() && ProgressInformation.ActivityType.RESOURCE_OBJECT_OPERATION.equals(progressActivity.getActivityType()) && progressActivity.getResourceOperationResultList() != null && !progressActivity.getResourceOperationResultList().isEmpty()) {
String resourceOid = rowModel.getObject().getResourceOid();
if (StringUtils.isNotEmpty(resourceOid) && progressActivity.getResourceShadowDiscriminator() != null && resourceOid.equals(progressActivity.getResourceShadowDiscriminator().getResourceOid())) {
return progressActivity.getOperationResult();
}
}
}
return new OperationResult("Empty result");
}
};
ColumnResultPanel resultPanel = new ColumnResultPanel(componentId, resultStatusModel) {
@Override
protected boolean isProjectionResult() {
return !rowModel.getObject().isMidpoint();
}
@Override
protected DisplayType getDisplayForEmptyResult() {
String policyOid = rowModel.getObject().getPasswordValuePolicyOid();
if (StringUtils.isNotEmpty(policyOid) && ChangePasswordPanel.this.getModelObject().getPasswordPolicies().containsKey(policyOid)) {
if (limitationsByPolicyOid.get(policyOid) != null) {
var ref = new Object() {
boolean result = true;
};
limitationsByPolicyOid.get(policyOid).forEach((limit) -> {
if (ref.result && !limit.isSuccess()) {
ref.result = false;
}
});
if (!ref.result && rowModel.getObject().isSelected()) {
return GuiDisplayTypeUtil.createDisplayType("fa-fw fa fa-times-circle text-muted fa-lg", "", createStringResource("ChangePasswordPanel.result.validationError").getString());
}
}
}
return null;
}
};
resultPanel.setOutputMarkupId(true);
cellItem.add(resultPanel);
}
@Override
public String getCssClass() {
return "col-lg-2";
}
});
return columns;
}
Aggregations