public boolean isFieldLayoutSchemesVisiblyEquivalent(Long fieldConfigurationSchemeId1, Long fieldConfigurationSchemeId2) { // short circuit for comparing the system default with itself. if (fieldConfigurationSchemeId1 == null && fieldConfigurationSchemeId2 == null) { return true; } FieldConfigurationScheme scheme1 = getNotNullFieldConfigurationScheme(fieldConfigurationSchemeId1); FieldConfigurationScheme scheme2 = getNotNullFieldConfigurationScheme(fieldConfigurationSchemeId2); // Check the mapped FieldConfiguration for each Issue Type for (String issueType : getAllRelevantIssueTypeIds()) { if (!isFieldLayoutsVisiblyEquivalent(scheme1.getFieldLayoutId(issueType), scheme2.getFieldLayoutId(issueType))) { return false; } } // All checks OK return true; }
private boolean isSystemDefaultScheme(final FieldConfigurationScheme fieldConfigurationScheme) { return (fieldConfigurationScheme == null || fieldConfigurationScheme.getId() == null); }
if (scheme != null) schemes.put(scheme.getId(), scheme); layoutIds.add(scheme.getFieldLayoutId(issueTypeId));
@Override public List<Project> getProjectsForScheme(Long schemeId) { final Set<Project> matchingProjects = Sets.newTreeSet(ProjectNameComparator.COMPARATOR); final FieldConfigurationScheme fieldConfigurationScheme = fieldLayoutManager.getFieldConfigurationScheme(schemeId); for (final Project project : getProjectsForUser(authenticationContext.getUser())) { final FieldConfigurationScheme projectScheme = fieldLayoutManager.getFieldConfigurationScheme(project); if((isSystemDefaultScheme(fieldConfigurationScheme) && isSystemDefaultScheme(projectScheme)) || fieldConfigurationScheme != null && projectScheme != null && fieldConfigurationScheme.getId().equals(projectScheme.getId())) { matchingProjects.add(project); } } return Lists.newArrayList(matchingProjects); }
fieldLayoutIds.add(fieldConfigurationScheme.getFieldLayoutId(issueType));
void associateSchemesOfExistingProjectWithNewProject(Project newProject, Project existingProject) { for (SchemeManager schemeManager : schemeManagerFactory.getAllSchemeManagers()) { Optional<Scheme> projectScheme = ofNullable(schemeManager.getSchemeFor(existingProject)); projectScheme.ifPresent(scheme -> schemeManager.addSchemeToProject(newProject, scheme)); } associateIssueTypeScheme(newProject, existingProject); Optional<IssueTypeScreenScheme> optionalIssueTypeScreenScheme = ofNullable(issueTypeScreenSchemeManager.getIssueTypeScreenScheme(existingProject)); optionalIssueTypeScreenScheme.ifPresent(scheme -> issueTypeScreenSchemeManager.addSchemeAssociation(newProject, scheme)); Optional<FieldConfigurationScheme> optionalFieldConfigScheme = ofNullable(fieldLayoutManager.getFieldConfigurationScheme(existingProject)); optionalFieldConfigScheme.ifPresent(scheme -> fieldLayoutManager.addSchemeAssociation(newProject, scheme.getId())); }
@Override public Collection<GenericValue> getProjects(FieldConfigurationScheme fieldConfigurationScheme) { if (fieldConfigurationScheme == null) { return getProjectGVsWithDefaultFieldConfigurationScheme(); } GenericValue fieldConfigurationSchemeGV = makeFieldLayoutSchemeGenericValue(fieldConfigurationScheme.getId()); return nodeAssociationStore.getSourcesFromSink(fieldConfigurationSchemeGV, "Project", SchemeManager.PROJECT_ASSOCIATION); }
@Override public Collection<Project> getProjectsUsing(FieldConfigurationScheme fieldConfigurationScheme) { if (fieldConfigurationScheme == null) { return getProjectObjectsWithDefaultFieldConfigurationScheme(); } GenericValue fieldConfigurationSchemeGV = makeFieldLayoutSchemeGenericValue(fieldConfigurationScheme.getId()); final List<Long> projectIds = nodeAssociationStore.getSourceIdsFromSink(fieldConfigurationSchemeGV, "Project", SchemeManager.PROJECT_ASSOCIATION); return projectManager.convertToProjectObjects(projectIds); }
public String doDefault() { validateId(); if (!invalidInput()) { FieldConfigurationScheme fieldConfigurationScheme = fieldLayoutManager.getFieldConfigurationScheme(getProject()); if (fieldConfigurationScheme != null) { setSchemeId(fieldConfigurationScheme.getId()); } else { setSchemeId(null); } } return INPUT; }
@Override public void addSchemeAssociation(Project project, Long fieldLayoutSchemeId) { if (project == null) { throw new IllegalArgumentException("Project passed must not be null."); } // Get old association final FieldConfigurationScheme oldScheme = getFieldConfigurationScheme(project); if (oldScheme != null) { // Remove old association removeSchemeAssociation(project, oldScheme.getId()); } if (fieldLayoutSchemeId != null) { nodeAssociationStore.createAssociation(NODE_ASSOCATION_TYPE, project.getId(), fieldLayoutSchemeId); clearCaches(); eventPublisher.publish(new FieldLayoutSchemeAddedToProjectEvent(getMutableFieldLayoutScheme(fieldLayoutSchemeId), project)); } }
@RequiresXsrfCheck protected String doExecute() throws Exception { FieldConfigurationScheme currentFieldConfigurationScheme = fieldLayoutManager.getFieldConfigurationScheme(getProject()); Long currentFieldConfigurationSchemeId = currentFieldConfigurationScheme == null ? null : currentFieldConfigurationScheme.getId(); Long newFieldConfigurationSchemeId = getSchemeId(); // determine if we need to display a reindex message based on the scheme change if (fieldLayoutSchemeHelper.doesChangingFieldLayoutSchemeForProjectRequireMessage(getLoggedInUser(), getProjectId(), currentFieldConfigurationSchemeId, newFieldConfigurationSchemeId)) { reindexMessageManager.pushMessage(getLoggedInUser(), "admin.notifications.task.field.configuration"); } if (currentFieldConfigurationScheme != null) { fieldLayoutManager.removeSchemeAssociation(getProject(), currentFieldConfigurationSchemeId); } if (newFieldConfigurationSchemeId != null) { fieldLayoutManager.addSchemeAssociation(getProject(), newFieldConfigurationSchemeId); } return getRedirect("/plugins/servlet/project-config/" + getProject().getKey() + "/fields"); }