in cvs/javacvs-src/org/netbeans/lib/cvsclient/command/log/LogMessageParser.java [144:246]
public void parseLine(String line, boolean isErrorMessage) {
if (isErrorMessage) return;
if (processingRevision) {
if (line.startsWith(RCS_FILE)) {
processRcsFile(line.substring(RCS_FILE.length()));
return;
}
if (myRevisionPattern.matcher(line).matches()) {
processRevisionStart(line);
return;
}
if (line.startsWith(DATE)) {
processRevisionDate(line);
return;
}
// first check for the branches tag
if (line.startsWith(BRANCHES)) {
processBranches(line.substring(BRANCHES.length()));
}
else {
logMessageBuffer.add(line);
}
return;
}
if (addingSymNames) {
if (line.startsWith("\t")) {
processSymbolicNames(line.substring(1));
return;
}
}
// revision stuff first -> will be the most common to parse
if (line.startsWith(REVISION)) {
processRevisionStart(line);
return;
}
if (line.startsWith(KEYWORD_SUBST)) {
final String keywordSubstitution = line.substring(KEYWORD_SUBST.length()).trim();
logInfo.setKeywordSubstitution(KeywordSubstitution.getValue(keywordSubstitution));
addingSymNames = false;
return;
}
if (line.startsWith(RCS_FILE)) {
processRcsFile(line.substring(RCS_FILE.length()));
return;
}
if (line.startsWith(WORKING_FILE)) {
processWorkingFile(line.substring(WORKING_FILE.length()));
return;
}
if (line.startsWith(HEAD)) {
logInfo.setHeadRevision(line.substring(HEAD.length()).trim());
return;
}
if (line.startsWith(BRANCH)) {
logInfo.setBranch(line.substring(BRANCH.length()).trim());
return;
}
if (line.startsWith(LOCKS)) {
logInfo.setLocks(line.substring(LOCKS.length()).trim());
return;
}
if (line.startsWith(ACCESS_LIST)) {
logInfo.setAccessList(line.substring(ACCESS_LIST.length()).trim());
return;
}
if (line.startsWith(SYMBOLIC_NAMES)) {
addingSymNames = true;
return;
}
if (line.startsWith(TOTAL_REVISIONS)) {
final int semicolonIndex = line.indexOf(SELECTED_REVISIONS);
if (semicolonIndex < 0) {
// no selected revisions here..
logInfo.setTotalRevisions(line.substring(TOTAL_REVISIONS.length()).trim());
logInfo.setSelectedRevisions("0");
}
else {
final String totalRevisions = line.substring(0, semicolonIndex);
final String selectedRevisions = line.substring(semicolonIndex);
logInfo.setTotalRevisions(totalRevisions.substring(TOTAL_REVISIONS.length()).trim());
logInfo.setSelectedRevisions(selectedRevisions.substring(SELECTED_REVISIONS.length()).trim());
}
return;
}
if (addingDescription) {
if (!processingRevision && line.startsWith(SPLITTER)) {
return;
}
logMessageBuffer.add(line);
return;
}
if (line.startsWith(DESCRIPTION)) {
logMessageBuffer = new ArrayList<>();
logMessageBuffer.add(line.substring(DESCRIPTION.length()));
addingDescription = true;
}
}