public QualityProfileDto create(DbSession dbSession, QProfileName name) {
   QualityProfileDto dto =
       db.qualityProfileDao().getByNameAndLanguage(name.getName(), name.getLanguage(), dbSession);
   if (dto != null) {
     throw new BadRequestException("Quality profile already exists: " + name);
   }
   return doCreate(dbSession, name);
 }
 QualityProfileDto getOrCreate(DbSession dbSession, QProfileName name) {
   QualityProfileDto profile =
       db.qualityProfileDao().getByNameAndLanguage(name.getName(), name.getLanguage(), dbSession);
   if (profile == null) {
     profile = doCreate(dbSession, name);
   }
   return profile;
 }
 private void verifyOneActiveRule(
     QProfileName profileName,
     String expectedSeverity,
     @Nullable String expectedInheritance,
     Map<String, String> expectedParams) {
   QualityProfileDto dto =
       db.qualityProfileDao()
           .selectByNameAndLanguage(profileName.getName(), profileName.getLanguage(), dbSession);
   verifyOneActiveRule(dto.getKey(), expectedSeverity, expectedInheritance, expectedParams);
 }
  private QualityProfileDto doCreate(DbSession dbSession, QProfileName name) {
    if (StringUtils.isEmpty(name.getName())) {
      throw new BadRequestException("quality_profiles.profile_name_cant_be_blank");
    }
    Date now = new Date();
    for (int i = 0; i < 20; i++) {
      String key =
          Slug.slugify(
              String.format(
                  "%s %s %s",
                  name.getLanguage(), name.getName(), RandomStringUtils.randomNumeric(5)));
      QualityProfileDto dto =
          QualityProfileDto.createFor(key)
              .setName(name.getName())
              .setLanguage(name.getLanguage())
              .setRulesUpdatedAtAsDate(now);
      if (db.qualityProfileDao().getByKey(dbSession, dto.getKey()) == null) {
        db.qualityProfileDao().insert(dbSession, dto);
        return dto;
      }
    }

    throw new IllegalStateException("Failed to create an unique quality profile for " + name);
  }