Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Mar 26, 2020
2 parents 57386c5 + f5cb871 commit d1f7802
Show file tree
Hide file tree
Showing 29 changed files with 2,705 additions and 2,233 deletions.
Expand Up @@ -97,7 +97,10 @@ private Component getPanel(String componentId, IModel<T> rowModel,
List<ButtonInlineMenuItem> buttonMenuItems = new ArrayList<>();
menuItems.forEach(menuItem -> {
if (menuItem instanceof ButtonInlineMenuItem){
if (isHeaderPanel && !menuItem.isHeaderMenuItem() || !menuItem.getVisible().getObject()){
if (isHeaderPanel && !menuItem.isHeaderMenuItem() || !menuItem.getVisible().getObject()) {
return;
}
if (menuItem.getVisibilityChecker() != null && !menuItem.getVisibilityChecker().isVisible(rowModel, isHeaderPanel)) {
return;
}
buttonMenuItems.add((ButtonInlineMenuItem) menuItem);
Expand Down
Expand Up @@ -20,7 +20,9 @@

import javax.xml.namespace.QName;

import com.evolveum.midpoint.model.api.ModelAuthorizationAction;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectList;
Expand Down Expand Up @@ -353,6 +355,14 @@ public String getButtonIconCssClass() {
}
});

boolean canReadTraces;
try {
canReadTraces = isAuthorized(ModelAuthorizationAction.READ_TRACE.getUrl());
} catch (Throwable t) {
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't authorize reading traces", t);
canReadTraces = false;
}

ButtonInlineMenuItem item = new ButtonInlineMenuItem(createStringResource("DownloadButtonPanel.download")) {
private static final long serialVersionUID = 1L;

Expand Down Expand Up @@ -381,11 +391,20 @@ public boolean isHeaderMenuItem(){
return false;
}
};
if (!canReadTraces) {
item.setVisibilityChecker((rowModel, isHeader) -> !isTrace(rowModel));
}
menuItems.add(item);

return menuItems;
}

private boolean isTrace(IModel<?> rowModel) {
//noinspection unchecked
SelectableBean<ReportOutputType> row = (SelectableBean<ReportOutputType>) rowModel.getObject();
return ObjectTypeUtil.hasArchetype(row.getValue(), SystemObjectsType.ARCHETYPE_TRACE.value());
}

private IModel<String> createDeleteConfirmString() {
return new IModel<String>() {

Expand Down
Expand Up @@ -4,24 +4,6 @@
import java.util.Collection;
import java.util.Collections;

import com.evolveum.midpoint.gui.impl.component.AjaxCompositedIconButton;
import com.evolveum.midpoint.gui.impl.component.data.column.CompositedIconPanel;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIcon;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.gui.impl.component.icon.IconCssStyle;
import com.evolveum.midpoint.gui.impl.prism.PrismPropertyValueWrapper;
import com.evolveum.midpoint.gui.impl.prism.PrismReferenceValueWrapperImpl;
import com.evolveum.midpoint.gui.impl.prism.PrismReferenceWrapper;
import com.evolveum.midpoint.model.api.authentication.GuiProfiledPrincipal;
import com.evolveum.midpoint.model.api.util.ModelContextUtil;
import com.evolveum.midpoint.prism.Referencable;
import com.evolveum.midpoint.schema.ObjectDeltaOperation;

import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.web.security.util.SecurityUtils;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
Expand All @@ -35,15 +17,27 @@
import com.evolveum.midpoint.gui.api.prism.PrismObjectWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.component.AjaxCompositedIconButton;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIcon;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.gui.impl.component.icon.IconCssStyle;
import com.evolveum.midpoint.gui.impl.prism.PrismPropertyValueWrapper;
import com.evolveum.midpoint.gui.impl.prism.PrismPropertyWrapper;
import com.evolveum.midpoint.gui.impl.prism.PrismReferenceValueWrapperImpl;
import com.evolveum.midpoint.gui.impl.prism.PrismReferenceWrapper;
import com.evolveum.midpoint.model.api.authentication.GuiProfiledPrincipal;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.prism.Referencable;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.report.api.ReportConstants;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.ObjectDeltaOperation;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.MiscUtil;
Expand All @@ -64,6 +58,7 @@
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails;
import com.evolveum.midpoint.web.page.admin.reports.PageCreatedReports;
import com.evolveum.midpoint.web.security.util.SecurityUtils;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.web.util.TaskOperationUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -283,7 +278,7 @@ public void onClick(AjaxRequestTarget target) {
ajaxDownloadBehavior.initiate(target);
}
};
download.add(new VisibleBehaviour(() -> isDownloadReportVisible()));
download.add(new VisibleBehaviour(this::isDownloadReportVisible));
download.add(AttributeAppender.append("class", "btn-primary"));
repeatingView.add(download);
}
Expand All @@ -294,20 +289,15 @@ private boolean isDownloadReportVisible() {
}

private ReportOutputType getReportOutput() {
PrismProperty<String> reportOutput = getReportOutputProperty();
String reportOutput = getReportOutputProperty();
if (reportOutput == null) {
return null;
}

String reportOutputOid = reportOutput.getRealValue();
if (reportOutputOid == null) {
return null;
}

Task opTask = createSimpleTask(OPERATION_LOAD_REPORT_OUTPUT);
OperationResult result = opTask.getResult();

PrismObject<ReportOutputType> report = WebModelServiceUtils.loadObject(ReportOutputType.class, reportOutputOid, this, opTask, result);
PrismObject<ReportOutputType> report = WebModelServiceUtils.loadObject(ReportOutputType.class, reportOutput, this, opTask, result);
if (report == null) {
return null;
}
Expand All @@ -318,9 +308,14 @@ private ReportOutputType getReportOutput() {

}

private PrismProperty<String> getReportOutputProperty() {
private String getReportOutputProperty() {
PrismObject<TaskType> task = getTask().asPrismObject();
return task.findProperty(ItemPath.create(TaskType.F_EXTENSION, ReportConstants.REPORT_OUTPUT_OID_PROPERTY_NAME));
PrismProperty<String> reportOutput = task.findProperty(ItemPath.create(TaskType.F_EXTENSION, ReportConstants.REPORT_OUTPUT_OID_PROPERTY_NAME));
if (reportOutput == null) {
return null;
}

return reportOutput.getRealValue();
}

private void createRefreshNowIconButton(RepeatingView repeatingView) {
Expand Down Expand Up @@ -423,11 +418,10 @@ private void saveTaskChanges(AjaxRequestTarget target, ObjectDelta<TaskType> tas

private CompositedIcon getTaskCleanupCompositedIcon(String basicIconClass){
CompositedIconBuilder iconBuilder = new CompositedIconBuilder();
CompositedIcon icon = iconBuilder
return iconBuilder
.setBasicIcon(basicIconClass, IconCssStyle.IN_ROW_STYLE)
.appendLayerIcon(WebComponentUtil.createIconType(GuiStyleConstants.CLASS_ICON_TRASH), IconCssStyle.BOTTOM_RIGHT_STYLE)
.build();
return icon;
}

private void afterOperation(AjaxRequestTarget target, OperationResult result) {
Expand All @@ -436,11 +430,27 @@ private void afterOperation(AjaxRequestTarget target, OperationResult result) {
refresh(target);
}

@Override
public void savePerformed(AjaxRequestTarget target) {
savePerformed(target, false);
}

private boolean saveAndRun = false;

public void saveAndRunPerformed(AjaxRequestTarget target) {
saveAndRun = true;
savePerformed(target, true);
}

private void savePerformed(AjaxRequestTarget target, boolean run) {
PrismObjectWrapper<TaskType> taskWrapper = getObjectWrapper();
try {
PrismPropertyWrapper<TaskExecutionStatusType> executionStatus = taskWrapper.findProperty(ItemPath.create(TaskType.F_EXECUTION_STATUS));
executionStatus.getValue().setRealValue(TaskExecutionStatusType.RUNNABLE);
if (run) {
executionStatus.getValue().setRealValue(TaskExecutionStatusType.RUNNABLE);
} else {
executionStatus.getValue().setRealValue(TaskExecutionStatusType.SUSPENDED);
}

setupOwner(taskWrapper);
setupRecurrence(taskWrapper);
Expand All @@ -452,7 +462,11 @@ public void saveAndRunPerformed(AjaxRequestTarget target) {
}

if (!checkScheduleFilledForReccurentTask(taskWrapper)) {
getSession().error("Cannot run recurring task without setting scheduling for it.");
if (run) {
getSession().error("Cannot run recurring task without setting scheduling for it.");
} else {
getSession().warn("Cannot run recurring task without setting scheduling for it.");
}
target.add(getFeedbackPanel());
return;
}
Expand Down Expand Up @@ -507,10 +521,11 @@ public void finishProcessing(AjaxRequestTarget target, Collection<ObjectDeltaOpe
}

if (result.isSuccess() && executedDeltas != null) {
//TODO change to inProgress result, so there is a link to existing task
String taskOid = ObjectDeltaOperation.findFocusDeltaOidInCollection(executedDeltas);
if (taskOid != null) {
result.recordInProgress();
if (saveAndRun) {
result.recordInProgress();
}
result.setBackgroundTaskOid(taskOid);
}
}
Expand Down

0 comments on commit d1f7802

Please sign in to comment.