private static int doProcessLine()

in clearcase-server/src/jetbrains/buildServer/buildTriggers/vcs/clearcase/configSpec/ConfigSpecParseUtil.java [129:191]


  private static int doProcessLine(final ConfigSpecRulesProcessor processor,
                                    final String line,
                                    final boolean lineIsBlockRuleEnd,
                                    @Nullable final File inputConfigSpecFile,
                                    @Nullable final File outputConfigSpecFile,
                                    final int configSpecIncludesIndex) throws VcsException, IOException {
    String firstWord = extractFirstWord(line), trimmedfirstWord = trimQuotes(firstWord.trim());
    String rule = line.substring(firstWord.length()).trim();

    int includesIndex = configSpecIncludesIndex;

    if (ConfigSpecRuleTokens.BLOCK_RULE_END.equalsIgnoreCase(trimmedfirstWord)) {
      doProcessLine(processor, rule, true, inputConfigSpecFile, outputConfigSpecFile, includesIndex);
    } else if (ConfigSpecRuleTokens.TIME.equalsIgnoreCase(trimmedfirstWord)) {
      processor.processTimeRule(rule, !lineIsBlockRuleEnd);
    } else if (ConfigSpecRuleTokens.CREATE_BRANCH.equalsIgnoreCase(trimmedfirstWord)) {
      processor.processCreateBranchRule(rule, !lineIsBlockRuleEnd);
    } else if (lineIsBlockRuleEnd) {
      // ignoring wrong lines like "end element ..."
    } else if (ConfigSpecRuleTokens.LOAD.equalsIgnoreCase(trimmedfirstWord)) {
      processor.processLoadRule(trimQuotes(rule));
    } else if (ConfigSpecRuleTokens.FILE_INCLUSION.equalsIgnoreCase(trimmedfirstWord)) {
      includesIndex++;
      final File inputFile;
      if (inputConfigSpecFile != null) {
        inputFile = new File(inputConfigSpecFile.getAbsolutePath() + "." + includesIndex);
      } else {
        inputFile = new File(trimQuotes(rule));
      }
      OutputStream outputStream = null;
      if (outputConfigSpecFile != null) {
        final File outputFile = new File(outputConfigSpecFile.getAbsolutePath() + "." + includesIndex);
        if (!outputFile.exists()) {
          //noinspection ResultOfMethodCallIgnored
          outputFile.createNewFile();
        }
        outputStream = new FileOutputStream(outputFile);
      }
      try {
        includesIndex = readConfigSpecFromStream(processor, new FileInputStream(inputFile), inputConfigSpecFile, outputStream, outputConfigSpecFile, includesIndex);
      } catch (FileNotFoundException e) {
        throw new VcsException("Invalid config spec rule: \"" + line + "\"", e);
      }
    } else if (ConfigSpecRuleTokens.STANDARD.equalsIgnoreCase(trimmedfirstWord)) {
      String secondWord = extractFirstWord(rule), trimmedSecondWord = trimQuotes(secondWord.trim());
      rule = rule.substring(secondWord.length()).trim();
      String thirdWord = extractFirstWord(rule), trimmedThirdWord = trimQuotes(thirdWord.trim());

      if (ConfigSpecRuleTokens.STANDARD_FILE.equals(trimmedSecondWord) || ConfigSpecRuleTokens.STANDARD_DIRECTORY.equals(trimmedSecondWord)) {
        rule = rule.substring(thirdWord.length()).trim();
        processor.processStandartRule(trimmedSecondWord + ":", trimmedThirdWord, rule);
      } else if (ConfigSpecRuleTokens.STANDARD_ELTYPE.equals(trimmedSecondWord)) {
        rule = rule.substring(thirdWord.length()).trim();
        String fourthWord = extractFirstWord(rule), trimmedFourthWord = trimQuotes(fourthWord.trim());
        rule = rule.substring(fourthWord.length()).trim();
        processor.processStandartRule(trimmedSecondWord + ":" + trimmedThirdWord, trimmedFourthWord, rule);
      } else {
        processor.processStandartRule(":", trimmedSecondWord, rule);
      }
    }

    return includesIndex;
  }