protected boolean isFieldRequired(FieldLayout fieldLayout, String fieldId) { if (MappingConstants.nonSystemFieldsFieldIds.contains(fieldId)) { return false; } return fieldLayout.getFieldLayoutItem(fieldId).isRequired(); }
@Override public List<String> getProvidedFieldNames(final Issue issueObject) { FieldScreenRenderer fieldScreenRenderer = createFieldScreenRenderer(issueObject); List<FieldLayoutItem> visibleLayoutItems = fieldScreenRenderer.getFieldLayout().getVisibleLayoutItems(issueObject.getProjectObject(), Lists.newArrayList(issueObject.getIssueTypeId())); List providedFieldNames = Lists.newArrayListWithCapacity(visibleLayoutItems.size()); for (final FieldLayoutItem fieldLayoutItem : visibleLayoutItems) { String fieldId = fieldLayoutItem.getOrderableField().getId(); providedFieldNames.add(fieldId); } return providedFieldNames; }
public EditableDefaultFieldLayout getEditableDefaultFieldLayout() { final FieldLayout relevantFieldLayout = getRelevantFieldLayout(null); return new EditableDefaultFieldLayoutImpl(relevantFieldLayout.getGenericValue(), relevantFieldLayout.getFieldLayoutItems()); }
Map fieldValuesHolder = new HashMap(); List<String> targetIssueTypeIdList = ImmutableList.of(targetSubTask.getIssueTypeId()); for (FieldLayoutItem fieldLayoutItem : targetFieldLayout.getVisibleLayoutItems(getTargetProjectObj(), targetIssueTypeIdList)) for (Field field : targetFieldLayout.getHiddenFields(getTargetProjectObj(), targetIssueTypeIdList)) FieldLayoutItem fieldLayoutItem = ComponentAccessor.getFieldLayoutManager().getFieldLayout(targetSubTask).getFieldLayoutItem(field); field.updateValue(fieldLayoutItem, targetSubTask, modifiedFields.get(fieldId), subTaskChangeHolder);
public String getHtml(final Map displayParams, final Issue issue) { final FieldLayout fieldLayout = ComponentAccessor.getFieldLayoutManager().getFieldLayout(issue); final String hiddenFieldId = getNavigableField().getHiddenFieldId(); if ((fieldLayout == null) || ((hiddenFieldId != null) && fieldLayout.isFieldHidden(hiddenFieldId))) { return ""; } else { final String timerName = !UtilTimerStack.isActive() ? "" : "Rendering navigable field '" + getNavigableField().getId() + "' for issue: " + (issue == null ? "null" : issue.getKey()); try { UtilTimerStack.push(timerName); return getNavigableField().getColumnViewHtml(fieldLayout.getFieldLayoutItem(getNavigableField().getId()), displayParams, issue); } finally { UtilTimerStack.pop(timerName); } } }
public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof FieldLayout)) return false; final FieldLayout fieldLayout = (FieldLayout) o; return super.equals(o) && getFieldLayoutItems().equals(fieldLayout.getFieldLayoutItems()); }
protected Collection<Field> getTargetHiddenFields(final BulkEditBean bulkEditBean) { return bulkEditBean.getTargetFieldLayout() .getHiddenFields(bulkEditBean.getTargetProject(), EasyList.build(bulkEditBean.getTargetIssueTypeId())); }
public void deleteFieldLayout(FieldLayout fieldLayout) { try { GenericValue genericValue = fieldLayout.getGenericValue(); if (genericValue != null) { genericValue.removeRelated("ChildFieldLayoutItem"); genericValue.remove(); } clearCaches(); } catch (GenericEntityException e) { throw new DataAccessException(e); } }
private Map<String, Boolean> createFieldIdToVisibilityMap(final Long fieldLayoutId) { FieldLayout fieldLayout = getFieldLayout(fieldLayoutId); final List<FieldLayoutItem> list = fieldLayout.getFieldLayoutItems(); final Map<String, Boolean> map = Maps.newHashMapWithExpectedSize(list.size()); for (FieldLayoutItem item : list) { map.put(item.getOrderableField().getId(), item.isHidden()); } return map; }
protected Collection getTargetHiddenFields() { return getTargetFieldLayout().getHiddenFields(getTargetProjectObj(), EasyList.build(getTargetIssueType())); }
private static boolean isFieldHidden(final Set<FieldLayout> fieldLayouts, final OrderableField field) { for (final FieldLayout fieldLayout : fieldLayouts) { final FieldLayoutItem fieldLayoutItem = fieldLayout.getFieldLayoutItem(field); if (!fieldLayoutItem.isHidden()) { return false; } } // The field is hidden in all field layouts return true; }
@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); } } }
public EditableFieldLayout getEditableFieldLayout(Long id) { FieldLayout fieldLayout = getRelevantFieldLayout(id); return new EditableFieldLayoutImpl(fieldLayout.getGenericValue(), fieldLayout.getFieldLayoutItems()); }
public Iterable<FieldLayoutItem> getAllVisibleFieldLayoutItems(final Project project, final IssueType issueType) { FieldLayout fieldLayout = fieldLayoutManager.getFieldLayout(project, issueType.getId()); return Iterables.filter(fieldLayout.getFieldLayoutItems(), new Predicate<FieldLayoutItem>() { public boolean apply(final FieldLayoutItem input) { // field is not associated with any screen or tab, create issue will not pick up its value so hide it if (fieldScreenManager.getFieldScreenTabs(input.getOrderableField().getId()).isEmpty()) { return false; } if (fieldManager.isCustomField(input.getOrderableField())) { CustomField customField = (CustomField) input.getOrderableField(); boolean inScope = customField.isInScope(project, Lists.newArrayList(issueType.getId())); return !input.isHidden() && inScope; } return !input.isHidden(); } }); }
@Override public Collection<OrderableField> getRemovedFields(Issue origIssue, Issue targetIssue) { Collection<OrderableField> removedFields = new ArrayList<OrderableField>(); FieldLayout targetFieldLayout = getFieldLayout(targetIssue); Collection<Field> hiddenFields = targetFieldLayout.getHiddenFields(targetIssue.getProjectObject(), Arrays.asList(targetIssue.getIssueTypeId())); // Hidden fields include custom fields that are not in scope for (Field field : hiddenFields) { if (field != null && fieldManager.isOrderableField(field)) { boolean doValueCheck = isShouldCheckFieldValue(origIssue, field); OrderableField orderableField = (OrderableField) field; // Remove values of all the fields that have a value but are hidden in the target project if (doValueCheck && orderableField.hasValue(targetIssue) && orderableField.canRemoveValueFromIssueObject(targetIssue)) { removedFields.add(orderableField); } } } return removedFields; }
public FieldLayoutItem getIssueTypeField(final Project project){ FieldLayout fieldLayout = fieldLayoutManager.getFieldLayout(project, null); return fieldLayout.getFieldLayoutItem(IssueFieldConstants.ISSUE_TYPE); }
@Override public Collection<FieldLayoutItem> getFieldLayoutItems(Issue originalIssue, Issue targetIssue) { List<FieldLayoutItem> convertFieldLayoutItems = new ArrayList<FieldLayoutItem>(); // Loop over all the visible fields and see which ones require to be moved FieldLayout targetFieldLayout = getFieldLayout(targetIssue); final Project targetProject = targetIssue.getProjectObject(); final List<String> issueTypeIds = Arrays.asList(targetIssue.getIssueTypeId()); final List<FieldLayoutItem> visibleLayoutItems = targetFieldLayout.getVisibleLayoutItems(targetProject, issueTypeIds); for (FieldLayoutItem fieldLayoutItem : visibleLayoutItems) { OrderableField orderableField = fieldLayoutItem.getOrderableField(); // Issue type is shown on the first stage of the move so no need to work with it here // If issueSecurityFieldIgnore is true and the field is the security level, it will not be added // to the list. This applies for issue -> subtask conversion. Not for subtask -> issue conversion. if (!IssueFieldConstants.ISSUE_TYPE.equals(orderableField.getId()) && !(canIssueSecurityFieldIgnore() && IssueFieldConstants.SECURITY.equals(orderableField.getId())) && orderableField.needsMove(EasyList.build(originalIssue), targetIssue, fieldLayoutItem).getResult()) { // Record that the field needs to be edited for the move convertFieldLayoutItems.add(fieldLayoutItem); } } //ensure the fieldlayoutitems are sorted, to make testing easier. Collections.sort(convertFieldLayoutItems); return convertFieldLayoutItems; }
public List<EditableFieldLayout> getEditableFieldLayouts() { List<EditableFieldLayout> fieldLayouts = new LinkedList<EditableFieldLayout>(); // Retrieve the default field layout fieldLayouts.add(getEditableDefaultFieldLayout()); // Get all non-default field layouts List<GenericValue> fieldLayoutGVs = ofBizDelegator.findByField("FieldLayout", "type", null, "name"); for (final GenericValue editableFieldLayoutGV : fieldLayoutGVs) { FieldLayout fieldLayout = getRelevantFieldLayout(editableFieldLayoutGV.getLong("id")); fieldLayouts.add(new EditableFieldLayoutImpl(fieldLayout.getGenericValue(), fieldLayout.getFieldLayoutItems())); } return fieldLayouts; }
protected FieldScreenRenderLayoutItem buildFieldScreenRenderLayoutItem(final OrderableField field, GenericValue issue) { return new FieldScreenRenderLayoutItemImpl(null, fieldLayoutManager.getFieldLayout(issue).getFieldLayoutItem(field)); }
private String getCommentFieldRendererType(Issue issue) { final FieldLayout layout = fieldLayoutManager.getFieldLayout(issue); final List<FieldLayoutItem> fieldLayoutItems = layout.getVisibleLayoutItems(issue.getProjectObject(), CollectionBuilder.list(issue.getIssueTypeId())); for (FieldLayoutItem item : fieldLayoutItems) { if (COMMENT_FIELD_KEY.equals(item.getOrderableField().getId())) { return item.getRendererType(); } } return null; }