public void parseLine()

in cvs/javacvs-src/org/netbeans/lib/cvsclient/command/status/StatusMessageParser.java [94:198]


        public void parseLine(String line, boolean isErrorMessage) {
		if (readingTags) {
			if (line.startsWith(NO_TAGS)) {
				outputDone();
				return;
			}

			final int bracket = line.indexOf('(');
			if (bracket > 0) {
				// it's another tag..
				final String tag = line.substring(0, bracket - 1).trim();
				final String rev = line.substring(bracket + 1, line.length() - 1);

				if (statusInformation == null) {
					statusInformation = new StatusInformation();
				}
				statusInformation.addExistingTag(tag, rev);
			}
			else {
				outputDone();
				return;
			}
		}

		if (isErrorMessage) {
			final int index = line.indexOf(StatusCommand.EXAM_DIR);
			if (index >= 0) {
				relativeDirectory = line.substring(index + StatusCommand.EXAM_DIR.length()).trim();
				beginning = true;
			}
			return;
		}

		if (beginning) {
			if (line.startsWith(QUESTION_MARK)) {
				final File file = cvsFileSystem.getLocalFileSystem().getFile(line.substring(QUESTION_MARK.length()));
				statusInformation = new StatusInformation();
				statusInformation.setFile(file);
				statusInformation.setStatus(FileStatus.UNKNOWN);
				outputDone();
			}

			if (line.startsWith(FILE)) {
				final int statusIndex = line.lastIndexOf(STATUS);
				final String statusString = line.substring(statusIndex + STATUS.length());
				final FileStatus status = FileStatus.getStatusForString(statusString);
				String fileName = line.substring(FILE.length(), statusIndex).trim();
				fileName = StringUtil.trimStart(fileName, NO_FILE);

				outputDone();

				statusInformation = new StatusInformation();
				statusInformation.setFile(createFile(fileName));
				statusInformation.setStatus(status);
				beginning = false;
			}

//			int index = line.indexOf(NOTHING_KNOWN_ABOUT);
//			if (index >= 0) {
//				final String fileName = line.substring(index + NOTHING_KNOWN_ABOUT.length());
//
//				createStatusInformation(fileName, true, FileStatus.UNKNOWN.toString());
//				return;
//			}
		}
		else {
			if (line.startsWith(WORK_REVISION)) {
				String workingRevision = line.substring(WORK_REVISION.length());
				if (workingRevision.startsWith(NO_ENTRY_FOR)) {
					workingRevision = "";
				}
				statusInformation.setWorkingRevision(workingRevision);
			}
			else if (line.startsWith(REPOSITORY_REVISION)) {
				final String repositoryRevision = line.substring(REPOSITORY_REVISION.length());
				statusInformation.setRepositoryRevision("");
				statusInformation.setRepositoryFileName("");
				if (!repositoryRevision.equals(NO_REVISION_CONTROL_FILE)) {
					final int separatorIndex = repositoryRevision.indexOf('\t');
					if (separatorIndex > 0) {
						statusInformation.setRepositoryRevision(repositoryRevision.substring(0, separatorIndex).trim());
						statusInformation.setRepositoryFileName(repositoryRevision.substring(separatorIndex).trim());
					}
				}
			}
			else if (line.startsWith(STICKY_TAG)) {
				final String stickyTag = line.substring(STICKY_TAG.length()).trim();
				statusInformation.setStickyTag(stickyTag);
			}
			else if (line.startsWith(STICKY_DATE)) {
				final String stickyDate = line.substring(STICKY_DATE.length()).trim();
				statusInformation.setStickyDate(stickyDate);
			}
			else if (line.startsWith(STICKY_OPTIONS)) {
				final String stickyOptions = line.substring(STICKY_OPTIONS.length()).trim();
				statusInformation.setStickyOptions(stickyOptions);
			}
			else if (line.startsWith(EXISTING_TAGS)) {
				readingTags = true;
			}
			else if (line.equals(SEPARATOR)) {
				outputDone();
			}
		}
	}