001    package net.sf.logdistiller.util;
002    
003    /*
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *     http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    
017    import java.text.ParseException;
018    
019    public class StringCutter
020    {
021        private final String src;
022    
023        private int index = 0;
024    
025        public StringCutter( String src )
026        {
027            this.src = src;
028        }
029    
030        public StringCutter( String src, int startIndex )
031        {
032            this.src = src;
033            this.index = startIndex;
034        }
035    
036        public String parseTo( String delimiter )
037            throws ParseException
038        {
039            return parseTo( delimiter, true );
040        }
041    
042        public String parseTo( String delimiter, boolean failIfNotFound )
043            throws ParseException
044        {
045            int to = src.indexOf( delimiter, index );
046            if ( to < index )
047            {
048                if ( failIfNotFound )
049                {
050                    throw new ParseException( "delimiter '" + delimiter + "' not found starting from index " + index
051                                              + " in '" + src + "'", index );
052                }
053                String token = src.substring( index );
054                index = src.length();
055                return token;
056            }
057            String token = src.substring( index, to );
058            index = to + delimiter.length();
059            return token;
060        }
061    
062        public String getRemaining()
063        {
064            return src.substring( index );
065        }
066    }