public void savePriorityClass()

in server/src/jetbrains/buildServer/serverSide/priority/PriorityClassManagerImpl.java [206:243]


  public void savePriorityClass(@NotNull final PriorityClass priorityClass) throws DuplicatePriorityClassNameException {
    if (priorityClass.getId().equals(DEFAULT_PRIORITY_CLASS_ID)) return;

    myLock.writeLock().lock();
    try {
      if (priorityClass.getId().equals(PERSONAL_PRIORITY_CLASS_ID)) {
        myPriorityClasses.put(PERSONAL_PRIORITY_CLASS_ID, new PersonalPriorityClass(priorityClass.getPriority()));
      } else {
        PriorityClass sameNamePriorityClass = findPriorityClassByName(priorityClass.getName());
        if (sameNamePriorityClass != null && !priorityClass.equals(sameNamePriorityClass)) {
          throw new DuplicatePriorityClassNameException("The priority class name '" + priorityClass.getName() + "' already exists");
        }
        PriorityClassImpl oldPc = myPriorityClasses.get(priorityClass.getId());
        if (oldPc != null) {
          Set<String> oldBuildTypeIds = oldPc.getExternalIds();
          oldBuildTypeIds.removeAll(((PriorityClassImpl)priorityClass).getExternalIds());
          for (String btId : oldBuildTypeIds) {
            myBuildTypePriorityClasses.remove(btId);
          }
        }
        for (String btId : ((PriorityClassImpl)priorityClass).getExternalIds()) {
          PriorityClass oldPriorityClass = findBuildTypePriorityClass(btId);
          if (oldPriorityClass != null) {
            SBuildType buildType = myServer.getProjectManager().findBuildTypeByExternalId(btId);
            if (buildType != null) {
              PriorityClassImpl updatedOldPriorityClass = (PriorityClassImpl)oldPriorityClass.removeBuildTypes(asList(buildType.getBuildTypeId()));
              myPriorityClasses.put(updatedOldPriorityClass.getId(), updatedOldPriorityClass);
            }
          }
          myBuildTypePriorityClasses.put(btId, priorityClass.getId());
        }
        myPriorityClasses.put(priorityClass.getId(), (PriorityClassImpl)priorityClass);
      }
    } finally {
      myLock.writeLock().unlock();
    }
    savePriorityClasses();
  }