Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into feature/prism-cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
tonydamage committed Feb 28, 2020
2 parents 2b04a54 + dd25e86 commit e48b6b4
Show file tree
Hide file tree
Showing 66 changed files with 915 additions and 820 deletions.
4 changes: 2 additions & 2 deletions .editorconfig
Expand Up @@ -10,7 +10,7 @@ trim_trailing_whitespace = true
ij_continuation_indent_size = 8
ij_formatter_off_tag = @formatter:off
ij_formatter_on_tag = @formatter:on
ij_formatter_tags_enabled = false
ij_formatter_tags_enabled = true
ij_smart_tabs = false
ij_visual_guides = 100,130,150,180
ij_wrap_on_typing = false
Expand Down Expand Up @@ -156,7 +156,7 @@ ij_java_keep_first_column_comment = true
ij_java_keep_indents_on_empty_lines = false
ij_java_keep_line_breaks = true
ij_java_keep_multiple_expressions_in_one_line = false
ij_java_keep_simple_blocks_in_one_line = false
ij_java_keep_simple_blocks_in_one_line = true
ij_java_keep_simple_classes_in_one_line = false
ij_java_keep_simple_lambdas_in_one_line = false
ij_java_keep_simple_methods_in_one_line = false
Expand Down
Expand Up @@ -217,5 +217,7 @@ public class GuiStyleConstants {
public static final String CLASS_ICON_CLAIM = "fa fa-paper-plane-o";
public static final String CLASS_ICON_TEXT = "fa fa-text-width";

public static final String CLASS_ICON_TRASH = "fa fa-trash-o";


}
Expand Up @@ -455,7 +455,7 @@ public List<PrismContainerValueWrapper<C>> getPerformedSelectedItems(IModel<Pris
return performedItems;
}

//TODO generalize for properites
//TODO generalize for properties
public PrismContainerValueWrapper<C> createNewItemContainerValueWrapper(
PrismContainerValue<C> newItem,
PrismContainerWrapper<C> model, AjaxRequestTarget target) {
Expand Down
Expand Up @@ -35,7 +35,12 @@ public void register() {

@Override
protected Panel getPanel(PrismPropertyPanelContext<ExpressionType> panelCtx) {
AceEditorPanel conditionPanel = new AceEditorPanel(panelCtx.getComponentId(), null, new ConditionExpressionModel(panelCtx.getRealValueModel(), panelCtx.getPageBase()), 200);
AceEditorPanel conditionPanel = new AceEditorPanel(panelCtx.getComponentId(), null, new ConditionExpressionModel(panelCtx.getRealValueModel(), panelCtx.getPageBase()), 200){
@Override
protected boolean isResizeToMaxHeight() {
return false;
}
};
// conditionPanel.getEditor().add(new OnChangeAjaxBehavior() {
// @Override
// protected void onUpdate(AjaxRequestTarget ajaxRequestTarget) {
Expand Down
Expand Up @@ -107,7 +107,8 @@ public boolean isVisible() {
return false;
}

if (!((PrismContainerWrapper) parent).isExpanded() && parent.isMultiValue()) {

if (!isShowOnTopLevel() && !((PrismContainerWrapper) parent).isExpanded() && parent.isMultiValue()) {
return false;
}
return true;
Expand Down
Expand Up @@ -15,6 +15,7 @@
import com.evolveum.midpoint.model.api.ModelPublicConstants;
import com.evolveum.midpoint.model.api.ModelService;
import com.evolveum.midpoint.model.api.context.ModelContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.delta.DeltaFactory;
Expand Down Expand Up @@ -465,6 +466,15 @@ public void executeChangesInBackground(Collection<ObjectDelta<? extends ObjectTy
task.setHandlerUri(ModelPublicConstants.EXECUTE_DELTAS_TASK_HANDLER_URI);
task.setName("Execute changes");
task.setInitialExecutionStatus(TaskExecutionStatus.RUNNABLE);

PrismObject<TaskType> taskType = task.getUpdatedTaskObject();
AssignmentType archetypeAssignment = new AssignmentType();
archetypeAssignment.setTargetRef(WebComponentUtil.createObjectRef(SystemObjectsType.ARCHETYPE_UTILITY_TASK.value(),
null, ArchetypeType.COMPLEX_TYPE));
taskType.asObjectable().getAssignment().add(archetypeAssignment);
taskType.asObjectable().getArchetypeRef().add(WebComponentUtil.createObjectRef(SystemObjectsType.ARCHETYPE_UTILITY_TASK.value(),
null, ArchetypeType.COMPLEX_TYPE));

taskManager.switchToBackground(task, result);
result.setBackgroundTaskOid(task.getOid());
} catch (Exception e) {
Expand Down
Expand Up @@ -54,10 +54,15 @@ public boolean isVisible() {
if (minSize > 0) {
editor.setMinHeight(minSize);
}
editor.setResizeToMaxHeight(isResizeToMaxHeight());
add(editor);
}

public AceEditor getEditor(){
return (AceEditor)get(ID_EDITOR);
}

protected boolean isResizeToMaxHeight() {
return true;
}
}
Expand Up @@ -14,6 +14,7 @@
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.component.PendingOperationPanel;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.prism.delta.*;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.QueryFactory;
Expand All @@ -22,6 +23,7 @@
import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.page.admin.server.PageTask;
import com.evolveum.midpoint.web.page.admin.server.PageTasks;
import com.evolveum.midpoint.web.security.util.SecurityUtils;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

Expand Down Expand Up @@ -322,72 +324,21 @@ public boolean isVisible() {
}
});

OperationResult result = new OperationResult(OPERATION_SEARCH_TASKS_FOR_RESOURCE);

List<PrismObject<TaskType>> importTasks = WebModelServiceUtils
.searchObjects(TaskType.class,
getPageBase().getPrismContext().queryFor(TaskType.class)
.block()
.item(TaskType.F_OBJECT_REF).ref(getResourceModel().getObject().getOid())
.and()
.item(TaskType.F_CATEGORY).eq(TaskCategory.IMPORTING_ACCOUNTS)
.endBlock()
// .or() //todo uncomment when archetype oid is fixed
// .item(AssignmentHolderType.F_ARCHETYPE_REF).ref(SystemObjectsType.ARCHETYPE_RECONCILIATION_TASK.value()) //TODO fix archetype ref
.build(),
result, getPageBase());

List<PrismObject<TaskType>> reconTasks = WebModelServiceUtils
.searchObjects(TaskType.class,
getPageBase().getPrismContext().queryFor(TaskType.class)
.block()
.item(TaskType.F_OBJECT_REF).ref(getResourceModel().getObject().getOid())
.and()
.item(TaskType.F_CATEGORY).eq(TaskCategory.RECONCILIATION)
.endBlock()
.or()
.item(AssignmentHolderType.F_ARCHETYPE_REF).ref(SystemObjectsType.ARCHETYPE_RECONCILIATION_TASK.value())
.build(),
result, getPageBase());

List<PrismObject<TaskType>> syncTasks = WebModelServiceUtils
.searchObjects(TaskType.class,
getPageBase().getPrismContext().queryFor(TaskType.class)
.block()
.item(TaskType.F_OBJECT_REF).ref(getResourceModel().getObject().getOid())
.and()
.item(TaskType.F_CATEGORY).eq(TaskCategory.LIVE_SYNCHRONIZATION)
.endBlock()
// .or() //todo uncomment when archetype oid is fixed
// .item(AssignmentHolderType.F_ARCHETYPE_REF).ref(SystemObjectsType.ARCHETYPE_RECONCILIATION_TASK.value()) //TODO fix archetype ref
.build(),
result, getPageBase());

// List<TaskType> tasksForKind = getTasksForKind(importTasks);

// List<TaskType> importTasks = new ArrayList<>();
// List<TaskType> syncTasks = new ArrayList<>();
// List<TaskType> reconTasks = new ArrayList<>();
// for (TaskType task : tasksForKind) {
// if (TaskCategory.RECONCILIATION.equals(task.getCategory())) {
// reconTasks.add(task);
// } else if (TaskCategory.LIVE_SYNCHRONIZATION.equals(task.getCategory())) {
// syncTasks.add(task);
// } else if (TaskCategory.IMPORTING_ACCOUNTS.equals(task.getCategory())) {
// importTasks.add(task);
// }
// }
initButton(ID_IMPORT, "Import", " fa-download", TaskCategory.IMPORTING_ACCOUNTS, "", getTasksForKind(importTasks));
initButton(ID_RECONCILIATION, "Reconciliation", " fa-link", TaskCategory.RECONCILIATION, SystemObjectsType.ARCHETYPE_RECONCILIATION_TASK.value(), getTasksForKind(reconTasks));
initButton(ID_LIVE_SYNC, "Live Sync", " fa-refresh", TaskCategory.LIVE_SYNCHRONIZATION, "", getTasksForKind(syncTasks));
initButton(ID_IMPORT, "Import", " fa-download", TaskCategory.IMPORTING_ACCOUNTS, SystemObjectsType.ARCHETYPE_IMPORT_TASK.value());
initButton(ID_RECONCILIATION, "Reconciliation", " fa-link", TaskCategory.RECONCILIATION, SystemObjectsType.ARCHETYPE_RECONCILIATION_TASK.value());
initButton(ID_LIVE_SYNC, "Live Sync", " fa-refresh", TaskCategory.LIVE_SYNCHRONIZATION, SystemObjectsType.ARCHETYPE_LIVE_SYNCH_TASK.value());

initCustomLayout();
}

protected abstract void initShadowStatistics(WebMarkupContainer totals);

private void initButton(String id, String label, String icon, final String category, final String archetypeOid,
final List<TaskType> tasks) {
private void initButton(String id, String label, String icon, String category, String archetypeOid) {

ObjectQuery existingTasksQuery = getExistingTasksQuery(archetypeOid);
OperationResult result = new OperationResult(OPERATION_SEARCH_TASKS_FOR_RESOURCE);
List<PrismObject<TaskType>> tasksList = WebModelServiceUtils.searchObjects(TaskType.class, existingTasksQuery,
result, getPageBase());

List<InlineMenuItem> items = new ArrayList<>();

Expand All @@ -402,7 +353,8 @@ public InlineMenuItemAction initAction() {

@Override
public void onClick(AjaxRequestTarget target) {
runTask(tasks, target);
List<TaskType> filteredByKindIntentTasks = getTasksForKind(tasksList);
redirectToTasksListPage(createInTaskOidQuery(filteredByKindIntentTasks), archetypeOid, target);
}
};
}
Expand All @@ -427,7 +379,7 @@ public void onClick(AjaxRequestTarget target) {
items.add(item);

DropdownButtonPanel button = new DropdownButtonPanel(id,
new DropdownButtonDto(String.valueOf(tasks.size()), icon, label, items)) {
new DropdownButtonDto(String.valueOf(tasksList != null ? tasksList.size() : 0), icon, label, items)) {
@Override
protected String getSpecialDropdownMenuClass() {
return "pull-left";
Expand Down Expand Up @@ -472,12 +424,41 @@ private void newTaskPerformed(String category, String archetypeOid, AjaxRequestT
setResponsePage(new PageTask(taskType.asPrismObject(), true));
}

private void runTask(List<TaskType> tasks, AjaxRequestTarget target) {
private ObjectQuery createInTaskOidQuery(List<TaskType> tasksList){
if (tasksList == null){
return null;
}
List<String> taskOids = new ArrayList<>();
tasksList.forEach(task -> taskOids.add(task.getOid()));
return getPageBase().getPrismContext().queryFor(TaskType.class)
.id(taskOids.toArray(new String[0]))
.build();
}
private void redirectToTasksListPage(ObjectQuery tasksQuery, String archetypeOid, AjaxRequestTarget target) {
String taskCollectionViewName = getTaskCollectionViewNameByArchetypeOid(archetypeOid);
PageParameters pageParameters = new PageParameters();
if (StringUtils.isNotEmpty(taskCollectionViewName)){
pageParameters.add(PageBase.PARAMETER_OBJECT_COLLECTION_NAME, taskCollectionViewName);
PageTasks pageTasks = new PageTasks(tasksQuery, pageParameters);
getPageBase().setResponsePage(pageTasks);
} else {
getPageBase().setResponsePage(PageTasks.class);
}

ResourceTasksPanel tasksPanel = new ResourceTasksPanel(getPageBase().getMainPopupBodyId(),
new ListModel<TaskType>(tasks), getPageBase());
getPageBase().showMainPopup(tasksPanel, target);
}

private String getTaskCollectionViewNameByArchetypeOid(String archetypeOid) {
if (StringUtils.isEmpty(archetypeOid)) {
return "";
}
List<CompiledObjectCollectionView> taskCollectionViews =
getPageBase().getCompiledGuiProfile().findAllApplicableArchetypeViews(TaskType.COMPLEX_TYPE);
for (CompiledObjectCollectionView view : taskCollectionViews) {
if (archetypeOid.equals(view.getCollection().getCollectionRef().getOid())) {
return view.getViewIdentifier();
}
}
return "";
}

private List<TaskType> getTasksForKind(List<PrismObject<TaskType>> tasks) {
Expand Down Expand Up @@ -1167,6 +1148,32 @@ private List<ShadowType> getSelectedShadowsList(ShadowType shadow) {
return selectedShadow;
}

private ObjectQuery getExistingTasksQuery(String archetypeRefOid){
return getPageBase().getPrismContext().queryFor(TaskType.class)
.item(AssignmentHolderType.F_ARCHETYPE_REF).ref(archetypeRefOid)
.build();
}

private QName getTaskObjectClass(){
QName objectClass = getObjectClass();
if (objectClass == null) {
LOGGER.trace("Trying to determine objectClass for kind: {}, intent: {}", getKind(), getIntent());
RefinedObjectClassDefinition objectClassDef = null;
try {
objectClassDef = getDefinitionByKind();
} catch (SchemaException e) {
LOGGER.error("Failed to search for objectClass definition. Reason: {}", e.getMessage(), e);
}
if (objectClassDef == null) {
LOGGER.warn("Cannot find any definition for kind: {}, intent: {}", getKind(), getIntent());
return null;
}

objectClass = objectClassDef.getTypeName();
}
return objectClass;
}

protected abstract GetOperationOptionsBuilder addAdditionalOptions(GetOperationOptionsBuilder builder);

protected abstract boolean isUseObjectCounting();
Expand Down
Expand Up @@ -11,6 +11,7 @@
import com.evolveum.midpoint.gui.api.component.MainObjectListPanel;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.result.OperationResultStatus;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
Expand All @@ -27,8 +28,10 @@
import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.util.EnableBehaviour;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.SelectableBeanImpl;
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.admin.PageAdmin;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand All @@ -38,12 +41,14 @@
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import javax.xml.datatype.XMLGregorianCalendar;
import java.util.ArrayList;
Expand Down Expand Up @@ -122,6 +127,34 @@ protected String translate(Enum en) {
}
});

columns.add(new CheckBoxColumn<SelectableBean<NodeType>>(createStringResource("pageTasks.node.actualNode")) {
private static final long serialVersionUID = 1L;

@Override
protected IModel<Boolean> getEnabled(IModel<SelectableBean<NodeType>> rowModel) {
return Model.of(Boolean.FALSE);
}

@Override
protected IModel<Boolean> getCheckBoxValueModel(IModel<SelectableBean<NodeType>> rowModel) {
return new IModel<Boolean>() {

private static final long serialVersionUID = 1L;

@Override
public Boolean getObject() {
if (getTaskManager().getNodeId() != null && rowModel != null
&& rowModel.getObject() != null && rowModel.getObject().getValue() != null
&& getTaskManager().getNodeId().equals(rowModel.getObject().getValue().getNodeIdentifier())) {
return Boolean.TRUE;
}

return Boolean.FALSE;
}
};
}
});

columns.add(new AbstractColumn<SelectableBean<NodeType>, String>(createStringResource("pageTasks.node.contact")) {

@Override
Expand Down

0 comments on commit e48b6b4

Please sign in to comment.