content: package ru.yandex.qatools.allure.config;
  
  import java.util.UUID;
  
  /**
   * @author Artem Eroshenko eroshenkoam@yandex-team.ru
   *         Date: 12/24/13
   */
  public final class AllureNamingUtils {
  
      public static final String FILE_NAME_PATTERN = "%s-%s.%s";
  
      /**
       * Don't create instance
       */
      AllureNamingUtils() {
          throw new IllegalStateException("Don't instance AllureNamingUtils");
      }
  
      /**
       * Generate suite file name with specified name
       *
       * @param name specified name
       * @return file name \"{name}-testsuite.xml\"
       */
      public static String generateTestSuiteFileName(String name) {
          AllureConfig config = AllureConfig.newInstance();
          return String.format(FILE_NAME_PATTERN,
                  name,
                  config.getTestSuiteFileSuffix(),
                  config.getTestSuiteFileExtension());
      }
  
      /**
       * Generate suite file name \"{randomUid}-testsutie.xml\"
       *
       * @return test suite file name
       */
      public static String generateTestSuiteFileName() {
          return generateTestSuiteFileName(UUID.randomUUID().toString());
      }
  
      /**
       * Detect bad xml 1.0 characters
       *
       * @param c to detect
       * @return true if specified character valid, false otherwise
       */
      public static boolean isBadXmlCharacter(char c) {
          boolean cDataCharacter = c < '\u0020' && c != '\t' && c != '\r' && c != '\n';
          cDataCharacter |= (c >= '\uD800' && c < '\uE000');
          cDataCharacter |= (c == '\uFFFE' || c == '\uFFFF');
          return cDataCharacter;
      }
  
      /**
       * Replace bad xml charactes in given array by space
       *
       * @param cbuf buffer to replace in
       * @param off  Offset from which to start reading characters
       * @param len  Number of characters to be replaced
       */
      public static void replaceBadXmlCharactersBySpace(char[] cbuf, int off, int len) {
          for (int i = off; i < off + len; i++) {
              if (isBadXmlCharacter(cbuf[i])) {
                  cbuf[i] = '\u0020';
              }
          }
      }
  
  }
  