Skip to content

Commit

Permalink
MID-7606 task name and ownerRef now handled via archetype weak focusM…
Browse files Browse the repository at this point in the history
…apping
  • Loading branch information
1azyman committed Mar 22, 2022
1 parent 896f8ba commit 0cbd62e
Show file tree
Hide file tree
Showing 27 changed files with 1,157 additions and 98 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,7 @@ protected void newObjectPerformed(AjaxRequestTarget target, AssignmentObjectRela

List<ObjectReferenceType> archetypeRef = ObjectCollectionViewUtil.getArchetypeReferencesList(collectionView);
try {
String taskNamePrefix = createTaskPrefix(collectionView);
TaskType newTask = createResourceTask(getPrismContext(), taskNamePrefix, ResourceTasksPanel.this.getObjectWrapper().getObject(), archetypeRef);
TaskType newTask = createResourceTask(getPrismContext(), ResourceTasksPanel.this.getObjectWrapper().getObject(), archetypeRef);

WebComponentUtil.initNewObjectWithReference(getPageBase(), newTask, archetypeRef);
} catch (SchemaException ex) {
Expand Down Expand Up @@ -187,7 +186,7 @@ public void onClick(AjaxRequestTarget target) {
add(suspend);
}

public static TaskType createResourceTask(PrismContext prismContext, String taskNamePrefix, PrismObject<ResourceType> resource,
public static TaskType createResourceTask(PrismContext prismContext, PrismObject<ResourceType> resource,
List<ObjectReferenceType> archetypeRefs) throws SchemaException {

PrismObjectDefinition<TaskType> def = prismContext.getSchemaRegistry().findObjectDefinitionByType(TaskType.COMPLEX_TYPE);
Expand All @@ -200,9 +199,6 @@ public static TaskType createResourceTask(PrismContext prismContext, String task
resourceRef.setTargetName(new PolyStringType(resource.getName()));
newTask.setObjectRef(resourceRef);

String name = createNewTaskName(taskNamePrefix, resource);
newTask.setName(new PolyStringType(name));

prepopulateTask(newTask, resource, archetypeRefs);

return newTask;
Expand Down Expand Up @@ -311,32 +307,6 @@ private static boolean hasArchetype(List<ObjectReferenceType> archetypeRefs, Str
return false;
}

private String createTaskPrefix(CompiledObjectCollectionView view) {
DisplayType display = view.getDisplay();
if (display != null && display.getLabel() != null) {
return display.getLabel().getOrig();
}

return null;
}

private static String createNewTaskName(String taskNamePrefix, PrismObject<ResourceType> resource) {
StringBuilder sb = new StringBuilder();
if (StringUtils.isNotEmpty(taskNamePrefix)) {
sb.append(taskNamePrefix);
sb.append(": ");
} else {
sb.append("Task: ");
}

PolyString name = resource.getName();
if (name != null) {
sb.append(name.getOrig());
}

return sb.toString();
}

private ObjectQuery createResourceTasksQuery() {
return getPageBase().getPrismContext().queryFor(TaskType.class)
.item(TaskType.F_OBJECT_REF).ref(getObjectWrapper().getOid())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@
import com.evolveum.midpoint.authentication.api.authorization.Url;
import com.evolveum.midpoint.gui.api.model.LoadableModel;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismObjectWrapper;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.page.admin.AbstractPageObjectDetails;
import com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.PageAssignmentHolderDetails;
import com.evolveum.midpoint.gui.impl.page.admin.component.TaskOperationalButtonsPanel;
import com.evolveum.midpoint.prism.PrismObject;
Expand All @@ -22,13 +20,10 @@
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.exception.SecurityViolationException;
import com.evolveum.midpoint.web.page.admin.server.TaskSummaryPanel;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import com.evolveum.prism.xml.ns._public.types_3.PolyStringType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.panel.Panel;
Expand Down Expand Up @@ -71,59 +66,9 @@ public Class<TaskType> getType() {

@Override
protected TaskDetailsModel createObjectDetailsModels(PrismObject<TaskType> object) {
if (object != null && object.getOid() == null) {
// we're adding task, let's see what we can prepare for use beforehand (not very nice in here, but so far there's no other place)
prepopulateTask(object);
}
return new TaskDetailsModel(createPrismObjectModel(object), PageTask.this);
}

@Deprecated
private void prepopulateTask(PrismObject<TaskType> object) {
TaskType task = object.asObjectable();
if (task.getOwnerRef() == null) {
try {
FocusType focus = getSecurityContextManager().getPrincipal().getFocus();
ObjectReferenceType ownerRef = new ObjectReferenceType();
ownerRef.setOid(getSecurityContextManager().getPrincipalOid());
ownerRef.setType(focus.asPrismObject().getDefinition().getTypeName());
ownerRef.setTargetName(focus.getName());
task.ownerRef(ownerRef);
} catch (SecurityViolationException e) {
// we can ignore it here probably
}
}

if (task.getName() == null) {
task.setName(createDefaultTaskName(task));
}
}

private PolyStringType createDefaultTaskName(TaskType task) {
String archetypeOid = null;
for (AssignmentType a : task.getAssignment()) {
ObjectReferenceType targetRef = a.getTargetRef();
if (targetRef == null || !ArchetypeType.COMPLEX_TYPE.equals(targetRef.getType())) {
continue;
}

archetypeOid = targetRef.getOid();
break;
}

if (archetypeOid == null) {
return new PolyStringType(getString("PageTask.newTaskDefaultName"));
}

Task t = createSimpleTask("Load archetype");
PrismObject<ArchetypeType> archetype = WebModelServiceUtils.loadObject(ArchetypeType.class, archetypeOid, this, t, t.getResult());
if (archetype != null) {
return new PolyStringType(archetype.getName().getOrig());
}

return new PolyStringType(getString("PageTask.newTaskDefaultName"));
}

@Override
protected Panel createSummaryPanel(String id, IModel<TaskType> summaryModel) {
return new TaskSummaryPanel(id, summaryModel, getObjectDetailsModels().getRootTaskModel(), getSummaryPanelSpecification());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -396,21 +396,13 @@ protected String getSpecialDropdownMenuClass() {

}

private String createTaskNamePrefix(String archetypeOid) {
Task task = getPageBase().createSimpleTask("Load archetype");
PrismObject<ArchetypeType> archetype = WebModelServiceUtils.loadObject(ArchetypeType.class, archetypeOid, getPageBase(), task, task.getResult());

return archetype != null ? archetype.getName().getOrig() : null;
}

private void newTaskPerformed(AjaxRequestTarget target, String archetypeOid) {
List<ObjectReferenceType> archetypeRef = Arrays.asList(
new ObjectReferenceType()
.oid(archetypeOid)
.type(ArchetypeType.COMPLEX_TYPE));
try {
TaskType newTask = ResourceTasksPanel.createResourceTask(getPrismContext(),
createTaskNamePrefix(archetypeOid), getResourceModel().getObject(), archetypeRef);
TaskType newTask = ResourceTasksPanel.createResourceTask(getPrismContext(), getResourceModel().getObject(), archetypeRef);

WebComponentUtil.initNewObjectWithReference(getPageBase(), newTask, archetypeRef);
} catch (SchemaException ex) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,54 @@
</assignment>
<inducement>
<focusMappings>
<mapping>
<strength>weak</strength>
<expression>
<script>
<code>
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType
import org.apache.commons.lang3.StringUtils

def task = focus as TaskType

String name = source.name

String resourceName = task?.objectRef?.targetName
if(StringUtils.isNotEmpty(resourceName)) {
return name + ': ' + resourceName
}

return name
</code>
</script>
</expression>
<target>
<path>name</path>
</target>
</mapping>
<mapping>
<strength>weak</strength>
<expression>
<script>
<code>
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType

FocusType focus = midpoint.principal.focus

ObjectReferenceType ownerRef = new ObjectReferenceType()
.setOid(midpoint.principalOid)
.setType(focus.asPrismObject().getDefinition().getTypeName())
.setTargetName(focus.getName());

return ownerRef
</code>
</script>
</expression>
<target>
<path>ownerRef</path>
</target>
</mapping>
<mapping>
<strength>weak</strength>
<expression>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,54 @@
</assignment>
<inducement>
<focusMappings>
<mapping>
<strength>weak</strength>
<expression>
<script>
<code>
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType
import org.apache.commons.lang3.StringUtils

def task = focus as TaskType

String name = source.name

String resourceName = task?.objectRef?.targetName
if(StringUtils.isNotEmpty(resourceName)) {
return name + ': ' + resourceName
}

return name
</code>
</script>
</expression>
<target>
<path>name</path>
</target>
</mapping>
<mapping>
<strength>weak</strength>
<expression>
<script>
<code>
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType

FocusType focus = midpoint.principal.focus

ObjectReferenceType ownerRef = new ObjectReferenceType()
.setOid(midpoint.principalOid)
.setType(focus.asPrismObject().getDefinition().getTypeName())
.setTargetName(focus.getName());

return ownerRef
</code>
</script>
</expression>
<target>
<path>ownerRef</path>
</target>
</mapping>
<mapping>
<strength>weak</strength>
<expression>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,54 @@
</assignment>
<inducement>
<focusMappings>
<mapping>
<strength>weak</strength>
<expression>
<script>
<code>
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType
import org.apache.commons.lang3.StringUtils

def task = focus as TaskType

String name = source.name

String resourceName = task?.objectRef?.targetName
if(StringUtils.isNotEmpty(resourceName)) {
return name + ': ' + resourceName
}

return name
</code>
</script>
</expression>
<target>
<path>name</path>
</target>
</mapping>
<mapping>
<strength>weak</strength>
<expression>
<script>
<code>
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType

FocusType focus = midpoint.principal.focus

ObjectReferenceType ownerRef = new ObjectReferenceType()
.setOid(midpoint.principalOid)
.setType(focus.asPrismObject().getDefinition().getTypeName())
.setTargetName(focus.getName());

return ownerRef
</code>
</script>
</expression>
<target>
<path>ownerRef</path>
</target>
</mapping>
<mapping>
<strength>weak</strength>
<expression>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,54 @@
</assignment>
<inducement>
<focusMappings>
<mapping>
<strength>weak</strength>
<expression>
<script>
<code>
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType
import org.apache.commons.lang3.StringUtils

def task = focus as TaskType

String name = source.name

String resourceName = task?.objectRef?.targetName
if(StringUtils.isNotEmpty(resourceName)) {
return name + ': ' + resourceName
}

return name
</code>
</script>
</expression>
<target>
<path>name</path>
</target>
</mapping>
<mapping>
<strength>weak</strength>
<expression>
<script>
<code>
import com.evolveum.midpoint.xml.ns._public.common.common_3.FocusType
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType

FocusType focus = midpoint.principal.focus

ObjectReferenceType ownerRef = new ObjectReferenceType()
.setOid(midpoint.principalOid)
.setType(focus.asPrismObject().getDefinition().getTypeName())
.setTargetName(focus.getName());

return ownerRef
</code>
</script>
</expression>
<target>
<path>ownerRef</path>
</target>
</mapping>
<mapping>
<strength>weak</strength>
<expression>
Expand Down

0 comments on commit 0cbd62e

Please sign in to comment.