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;
}