Skip to content

Commit

Permalink
Merge branch 'master' of github.com:Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Jul 22, 2014
2 parents 5c70267 + 4c05eb2 commit af7802d
Show file tree
Hide file tree
Showing 4 changed files with 102 additions and 10 deletions.
Expand Up @@ -55,6 +55,10 @@ <h2><wicket:message key="pageTaskEdit.basic"/></h2>
<td><wicket:message key="pageTaskEdit.execution"/></td>
<td><span wicket:id="execution"/> <span wicket:id="node"/></td>
</tr>
<tr>
<td><wicket:message key="pageTaskEdit.objectRef"/></td>
<td><select class="form-control input-sm" wicket:id="resourceRef"/></td>
</tr>
</table>
<h2><wicket:message key="pageTaskEdit.threadAction"/></h2>
<table class="table table-condensed table-striped">
Expand Down
Expand Up @@ -21,6 +21,7 @@
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.delta.ItemDelta;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.schema.SchemaRegistry;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
Expand All @@ -30,6 +31,7 @@
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.task.api.TaskBinding;
import com.evolveum.midpoint.task.api.TaskCategory;
import com.evolveum.midpoint.task.api.TaskManager;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
Expand All @@ -51,21 +53,13 @@
import com.evolveum.midpoint.web.component.util.VisibleEnableBehaviour;
import com.evolveum.midpoint.web.page.PageBase;
import com.evolveum.midpoint.web.page.PageTemplate;
import com.evolveum.midpoint.web.page.admin.server.dto.ScheduleValidator;
import com.evolveum.midpoint.web.page.admin.server.dto.StartEndDateValidator;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskDto;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskDtoExecutionStatus;
import com.evolveum.midpoint.web.page.admin.server.dto.TaskDtoProviderOptions;
import com.evolveum.midpoint.web.page.admin.server.dto.*;
import com.evolveum.midpoint.web.page.admin.server.subtasks.SubtasksPanel;
import com.evolveum.midpoint.web.page.admin.server.workflowInformation.WorkflowInformationPanel;
import com.evolveum.midpoint.web.util.InfoTooltipBehavior;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.xml.ns._public.common.common_3.MisfireActionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ScheduleType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ThreadStopActionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand Down Expand Up @@ -109,11 +103,13 @@ public class PageTaskEdit extends PageAdminTasks {
private static final String OPERATION_SUSPEND_TASKS = DOT_CLASS + "suspendTask";
private static final String OPERATION_RESUME_TASK = DOT_CLASS + "resumeTask";
private static final String OPERATION_RUN_NOW_TASK = DOT_CLASS + "runNowTask";
private static final String OPERATION_LOAD_RESOURCES = DOT_CLASS + "createResourceList";

private static final String ID_MAIN_FORM = "mainForm";
private static final String ID_IDENTIFIER = "identifier";
private static final String ID_HANDLER_URI_LIST = "handlerUriList";
private static final String ID_HANDLER_URI = "handlerUri";
private static final String ID_RESOURCE_REF = "resourceRef";
private static final String ID_MODEL_OPERATION_STATUS_LABEL = "modelOperationStatusLabel";
private static final String ID_MODEL_OPERATION_STATUS_PANEL = "modelOperationStatusPanel";
private static final String ID_SUBTASKS_LABEL = "subtasksLabel";
Expand Down Expand Up @@ -424,6 +420,42 @@ public String getObject() {
});
mainForm.add(execution);

final DropDownChoice resource = new DropDownChoice(ID_RESOURCE_REF,
new PropertyModel<TaskAddResourcesDto>(model, TaskDto.F_RESOURCE_REFERENCE),
new AbstractReadOnlyModel<List<TaskAddResourcesDto>>() {

@Override
public List<TaskAddResourcesDto> getObject() {
return createResourceList();
}
}, new IChoiceRenderer<TaskAddResourcesDto>() {

@Override
public Object getDisplayValue(TaskAddResourcesDto object) {
return object.getName();
}

@Override
public String getIdValue(TaskAddResourcesDto object, int index) {
return Integer.toString(index);
}
});
resource.setOutputMarkupId(true);
resource.add(new VisibleEnableBehaviour() {
@Override
public boolean isEnabled() {
if(!edit)
return false;

TaskDto dto = model.getObject();
boolean sync = TaskCategory.LIVE_SYNCHRONIZATION.equals(dto.getCategory());
boolean recon = TaskCategory.RECONCILIATION.equals(dto.getCategory());
boolean importAccounts = TaskCategory.IMPORTING_ACCOUNTS.equals(dto.getCategory());
return sync || recon || importAccounts;
}
});
mainForm.add(resource);

Label node = new Label("node", new AbstractReadOnlyModel<String>() {
@Override
public String getObject() {
Expand Down Expand Up @@ -755,6 +787,30 @@ private List<IColumn<OperationResult, String>> initResultColumns() {
return columns;
}

private List<TaskAddResourcesDto> createResourceList() {
OperationResult result = new OperationResult(OPERATION_LOAD_RESOURCES);
Task task = createSimpleTask(OPERATION_LOAD_RESOURCES);
List<PrismObject<ResourceType>> resources = null;
List<TaskAddResourcesDto> resourceList = new ArrayList<>();

try {
resources = getModelService().searchObjects(ResourceType.class, new ObjectQuery(), null, task, result);
result.recomputeStatus();
} catch (Exception ex) {
result.recordFatalError("Couldn't get resource list.", ex);
LoggingUtils.logException(LOGGER, "Couldn't get resource list", ex);
}

if (resources != null) {
ResourceType item = null;
for (PrismObject<ResourceType> resource : resources) {
item = resource.asObjectable();
resourceList.add(new TaskAddResourcesDto(item.getOid(), WebMiscUtil.getOrigStringFromPoly(item.getName())));
}
}
return resourceList;
}

private void savePerformed(AjaxRequestTarget target) {
LOGGER.debug("Saving new task.");
OperationResult result = new OperationResult(OPERATION_SAVE_TASK);
Expand Down Expand Up @@ -802,6 +858,15 @@ private Task updateTask(TaskDto dto, Task existingTask) throws SchemaException {
existingTask.setDescription(dto.getDescription());
}

TaskAddResourcesDto resourceRefDto;
if(dto.getResource() != null){
resourceRefDto = dto.getResource();
ObjectReferenceType resourceRef = new ObjectReferenceType();
resourceRef.setOid(resourceRefDto.getOid());
resourceRef.setType(ResourceType.COMPLEX_TYPE);
existingTask.setObjectRef(resourceRef);
}

if (!dto.getRecurring()) {
existingTask.makeSingle();
}
Expand Down
Expand Up @@ -31,6 +31,7 @@ pageTaskEdit.category=Category
pageTaskEdit.parent=Parent task
pageTaskEdit.handlerUri=Handler URI
pageTaskEdit.execution=Execution status
pageTaskEdit.objectRef=Resource reference
pageTaskEdit.suspendReq=For editing is necessary to suspend the task

pageTaskEdit.scheduleTitle=Scheduling
Expand Down
Expand Up @@ -49,6 +49,7 @@
import com.evolveum.midpoint.web.component.util.Selectable;
import com.evolveum.midpoint.web.component.wf.WfHistoryEventDto;
import com.evolveum.midpoint.web.util.WebMiscUtil;
import com.evolveum.midpoint.web.util.WebModelUtils;
import com.evolveum.midpoint.wf.api.WfTaskExtensionItemsNames;
import com.evolveum.midpoint.wf.processors.primary.PcpTaskExtensionItemsNames;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
Expand Down Expand Up @@ -86,11 +87,15 @@ public class TaskDto extends Selectable {
public static final String F_TASK_OPERATION_RESULT = "taskOperationResult";
public static final String F_PROGRESS_DESCRIPTION = "progressDescription";
public static final String F_DRY_RUN = "dryRun";
public static final String F_RESOURCE_REFERENCE = "resourceRef";

private List<String> handlerUriList;
private String parentTaskName;
private String parentTaskOid;

//resource reference
private TaskAddResourcesDto resourceRef;

// scheduling information
private Integer interval;
private String cronSpecification;
Expand Down Expand Up @@ -141,6 +146,7 @@ public TaskDto(TaskType taskType, ModelService modelService, TaskService taskSer
fillInTimestamps(taskType);
fillInHandlerUriList(taskType);
fillInScheduleAttributes(taskType);
fillInResourceReference(taskType, taskManager, thisOpResult, modelService);
fillInObjectRefAttributes(taskType, modelService, taskManager, options, thisOpResult);
fillInParentTaskAttributes(taskType, taskService, options, thisOpResult);
fillInOperationResultAttributes(taskType);
Expand All @@ -153,6 +159,14 @@ public TaskDto(TaskType taskType, ModelService modelService, TaskService taskSer
fillDryRun(taskType);
}

private void fillInResourceReference(TaskType task, TaskManager manager, OperationResult result, ModelService service){
ObjectReferenceType ref = task.getObjectRef();

if(ResourceType.COMPLEX_TYPE.equals(ref.getType())){
resourceRef = new TaskAddResourcesDto(ref.getOid(), getTaskObjectName(task, manager, service, result));
}
}

private void fillDryRun(TaskType taskType) {
PrismObject<TaskType> task = taskType.asPrismObject();
if (task.getExtension() == null) {
Expand Down Expand Up @@ -687,4 +701,12 @@ public boolean isDryRun() {
public void setDryRun(boolean dryRun) {
this.dryRun = dryRun;
}

public TaskAddResourcesDto getResource() {
return resourceRef;
}

public void setResource(TaskAddResourcesDto resource) {
this.resourceRef = resource;
}
}

0 comments on commit af7802d

Please sign in to comment.