| /***************************************************************************** |
| * Sun Public License Notice |
| * |
| * The contents of this file are subject to the Sun Public License Version |
| * 1.0 (the "License"). You may not use this file except in compliance with |
| * the License. A copy of the License is available at http://www.sun.com/ |
| |
| * The Original Code is the CVS Client Library. |
| * The Initial Developer of the Original Code is Robert Greig. |
| * Portions created by Robert Greig are Copyright (C) 2000. |
| * All Rights Reserved. |
| |
| * Contributor(s): Robert Greig. |
| *****************************************************************************/ |
| package org.netbeans.lib.cvsclient.event; |
| |
| import org.jetbrains.annotations.NonNls; |
| |
| /** |
| * An event sent from the server to indicate that a message should be |
| * displayed to the user |
| * @author Robert Greig |
| */ |
| public final class TaggedMessageParser { |
| |
| // Fields ================================================================= |
| |
| private final StringBuffer buffer = new StringBuffer(); |
| @NonNls private static final String NEWLINE_MESSAGE = "newline"; |
| |
| // Accessing ============================================================== |
| |
| public String getString() { |
| if (buffer.length() == 0) { |
| return null; |
| } |
| |
| final String line = buffer.toString(); |
| buffer.setLength(0); |
| return line; |
| } |
| |
| // Actions ================================================================ |
| |
| public String parseTaggedMessage(String taggedMessage) { |
| if (taggedMessage.charAt(0) == '+' || taggedMessage.charAt(0) == '-') { |
| return null; |
| } |
| |
| if (taggedMessage.equals(NEWLINE_MESSAGE)) { |
| return getString(); |
| } |
| |
| final int index = taggedMessage.indexOf(' '); |
| if (index > 0) { |
| buffer.append(taggedMessage.substring(index + 1)); |
| } |
| return null; |
| } |
| } |