@Override public void updateIssueFromFieldValuesHolder(final FieldScreenRenderer fieldScreenRenderer, final MutableIssue issueObject, final Map fieldValuesHolder) { FieldLayout fieldLayout = fieldScreenRenderer.getFieldLayout(); List<FieldLayoutItem> visibleLayoutItems = fieldLayout.getVisibleLayoutItems(issueObject.getProjectObject(), Lists.newArrayList(issueObject.getIssueTypeId())); for (final FieldLayoutItem fieldLayoutItem : visibleLayoutItems) { OrderableField orderableField = fieldLayoutItem.getOrderableField(); // A hack to get arround issue type not being shown - issue type is always shown as it is always required. if (!IssueFieldConstants.ISSUE_TYPE.equals(orderableField.getId())) { // Update the issue with needed values orderableField.updateIssue(fieldLayoutItem, issueObject, fieldValuesHolder); } } }
private List migrateSubTask(final Issue originalSubtask, final MutableIssue targetSubtask) throws GenericEntityException { ArrayList subTaskChangeItems = new ArrayList(); // update the target status if the original status is not valid in the target workflow if (!isTaskStatusValid(targetSubtask.getIssueTypeId(), targetSubtask.getStatusObject().getId())) { // Retrieve target status of subtask in new workflow from moveissuebean String subTaskTypeKey = getPrefixTaskStatusId(targetSubtask.getIssueTypeId(), targetSubtask.getStatusObject().getId()); Map taskTargetStatusMap = getMoveIssueBean().getTaskTargetStatusHolder(); targetSubtask.setStatusId((String) taskTargetStatusMap.get(subTaskTypeKey)); subTaskChangeItems.add(new ChangeItemBean(ChangeItemBean.STATIC_FIELD, IssueFieldConstants.STATUS, originalSubtask.getStatusObject().getId(), originalSubtask.getStatusObject().getName(), targetSubtask.getStatusObject().getId(), targetSubtask.getStatusObject().getName())); } // Migrate the subtask to the new status in the target workflow and create a changelog if (!isWorkflowMatch(originalSubtask.getIssueTypeId(), targetSubtask.getIssueTypeId())) { migrateIssueToWorkflow(targetSubtask, originalSubtask.getIssueTypeId(), getWorkflowForType(getTargetPid(), targetSubtask.getIssueTypeId()), targetSubtask.getStatus()); subTaskChangeItems.add(new ChangeItemBean(ChangeItemBean.STATIC_FIELD, "Workflow", originalSubtask.getWorkflowId().toString(), getWorkflowManager().getWorkflow(originalSubtask.getGenericValue()).getName(), targetSubtask.getWorkflowId().toString(), getWorkflowForType(getTargetPid(), targetSubtask.getIssueTypeId()).getName())); } return subTaskChangeItems; }
boolean parentIssueChangedIssueType = !newParent.getIssueTypeId().equals(newParentFromDb.getIssueTypeId()); boolean parentIssueChangedWorkflow = !newParent.getWorkflowId().equals(newParentFromDb.getWorkflowId()); Optional<Long> newParentSecurityLevelId = Optional.ofNullable(newParent.getSecurityLevelId());
issue.getIssueTypeId()).getFieldLayoutItem(getId()); log.warn("Unable to resolve the FieldLayoutItem for project: " + issue.getProjectId() + " and issue type: " + issue.getIssueTypeId());
public String getNewViewHtml(OrderableField field) { MutableIssue updatedIssue = getMoveIssueBean().getUpdatedIssue(); FieldLayout fieldLayout = fieldLayoutManager.getFieldLayout(updatedIssue.getProjectObject(), updatedIssue.getIssueTypeId()); FieldLayoutItem fieldLayoutItem = fieldLayout.getFieldLayoutItem(field); final Map<String, Object> displayParams = MapBuilder.<String, Object>newBuilder("nolink", Boolean.TRUE) .add("readonly", Boolean.TRUE) .add("prefix", "new_").toMutableMap(); return field.getViewHtml(fieldLayoutItem, this, updatedIssue, displayParams); }
fieldLayoutItem = ComponentAccessor.getFieldLayoutManager().getFieldLayout(issue.getProjectObject(), issue.getIssueTypeId()).getFieldLayoutItem(field);
.getFieldLayout(issue.getProjectObject(), issue.getIssueTypeId()) .getFieldLayoutItem(field);
.getFieldLayout(newIssue.getProjectObject(), newIssue.getIssueTypeId()) .getFieldLayoutItem(field); field.updateValue(fieldLayoutItem, newIssue, (ModifiedValue) modifiedFields.get(fieldId),
.getFieldLayout(issue.getProjectObject(), issue.getIssueTypeId()) .getFieldLayoutItem(field); if (fieldLayoutItem != null)
if (!isWorkflowMatch(originalSubTask.getIssueTypeId(), targetSubTask.getIssueTypeId()))
@SuppressWarnings ("UnusedDeclaration") public String getCustomFieldHtml() { final CustomField customField = getCustomField(); FieldConfig config = getFieldConfig(); Map displayParameters = MapBuilder.build( "defaultScreen", "true", "objectValue", customField.getCustomFieldType().getDefaultValue(config)); // Sees if we can set some values in the issue MutableIssue dummyIssue = getDummyIssue(); FieldLayoutItem fieldLayoutItem = null; // See if we can get a field layout item using the dummy issue try { if(dummyIssue.getProjectObject() != null && dummyIssue.getIssueTypeObject() != null) { FieldLayout fieldLayout = fieldLayoutManager.getFieldLayout(dummyIssue.getProjectObject(), dummyIssue.getIssueTypeId()); fieldLayoutItem = fieldLayout.getFieldLayoutItem(config.getCustomField().getId()); } } catch(DataAccessException ex) { // warn the user and move on with a null FieldLayoutItem log.warn("Unable to resolve a field layout item when setting the default value of custom field with id: " + config.getCustomField().getId(), ex); } return customField.getCustomFieldType().getDescriptor().getEditDefaultHtml(config, fieldValuesHolder, dummyIssue, this, displayParameters, fieldLayoutItem); }
List<String> targetIssueTypeIdList = ImmutableList.of(targetSubTask.getIssueTypeId()); for (FieldLayoutItem fieldLayoutItem : targetFieldLayout.getVisibleLayoutItems(getTargetProjectObj(), targetIssueTypeIdList))
@RequiresXsrfCheck protected String doExecute() throws Exception { MutableIssue issue = getMutableIssue(); // update the assignee system field OrderableField field = (OrderableField) fieldManager.getField(IssueFieldConstants.ASSIGNEE); FieldLayoutItem fieldLayoutItem = fieldLayoutManager.getFieldLayout(issue).getFieldLayoutItem(field); field.updateIssue(fieldLayoutItem, issue, getFieldValuesHolder()); // This hack is here until the comment field becomes placeable on screens by the users OrderableField commentField = (OrderableField) fieldManager.getField(IssueFieldConstants.COMMENT); FieldLayoutItem fieldLayoutItem2 = fieldLayoutManager.getFieldLayout(issue.getProjectObject(), issue.getIssueTypeId()).getFieldLayoutItem(commentField); commentField.updateIssue(fieldLayoutItem2, issue, getFieldValuesHolder()); issueManager.updateIssue(getLoggedInUser(), issue, ISSUE_ASSIGNED, true); if (isInlineDialogMode()) { return returnComplete(); } return getRedirect("/browse/" + issue.getKey()); }