Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How to get project's custom fields witch have screen(defined) in this project(java)?

kolyabehemoth
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
July 16, 2020

I have seen How to get a list of all fields in a project  and tried to make the same in java:

List<CustomField> customFields = ComponentAccessor.getCustomFieldManager().getCustomFieldObjects(projectId, ConstantsManager.ALL_ISSUE_TYPES);
Map<String, String> filteredCustomFields = new HashMap<>();
for (CustomField field : customFields) {
String key = field.getCustomFieldType().getKey();
if (!UNSUPPORTED_ML_FIELD_TYPES.contains(key) && key.contains(SYSTEM_CF_TYPES)) {
filteredCustomFields.put(field.getId(), field.getName());
}
}

Project currentProject = ComponentAccessor.getProjectManager().getProjectObj(projectId);
IssueTypeScreenScheme issueTypeScreenScheme = ComponentAccessor.getIssueTypeScreenSchemeManager().getIssueTypeScreenScheme(currentProject);
for (IssueTypeScreenSchemeEntity issueTypeScreenSchemeEntity: issueTypeScreenScheme.getEntities()) {
for (FieldScreenSchemeItem fieldScreenSchemeItem: issueTypeScreenSchemeEntity.getFieldScreenScheme().getFieldScreenSchemeItems()) {
for (FieldScreenTab fieldScreenTab: fieldScreenSchemeItem.getFieldScreen().getTabs()) {
for (FieldScreenLayoutItem fieldScreenLayoutItem: fieldScreenTab.getFieldScreenLayoutItems()) {
String fieldId = fieldScreenLayoutItem.getFieldId();
if (filteredCustomFields.containsKey(fieldId)) {
fieldsMap.put(fieldId, filteredCustomFields.get(fieldId));
}
}
}
}
}

And I'm wondering is there a way to make it simpler, without 3 inner loops?

0 answers

Suggest an answer

Log in or Sign up to answer