/*********************************************************************
 *
 * File        :  $Source: /ds6/cvs/privoxy/src/java/org/privoxy/activityconsole/StringUtil.java,v $
 *
 * Purpose     :  Utility string functions.
 *
 * Copyright   :  Written by and Copyright (C) 2003 the SourceForge
 *                Privoxy team. http://www.privoxy.org/
 *
 *                Based on the Internet Junkbuster originally written
 *                by and Copyright (C) 1997 Anonymous Coders and
 *                Junkbusters Corporation.  http://www.junkbusters.com
 *
 *                This program is free software; you can redistribute it
 *                and/or modify it under the terms of the GNU General
 *                Public License as published by the Free Software
 *                Foundation; either version 2 of the License, or (at
 *                your option) any later version.
 *
 *                This program is distributed in the hope that it will
 *                be useful, but WITHOUT ANY WARRANTY; without even the
 *                implied warranty of MERCHANTABILITY or FITNESS FOR A
 *                PARTICULAR PURPOSE.  See the GNU General Public
 *                License for more details.
 *
 *                The GNU General Public License should be included with
 *                this file.  If not, you can view it at
 *                http://www.gnu.org/copyleft/gpl.html
 *                or write to the Free Software Foundation, Inc., 59
 *                Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * Revisions   :
 *    $Log: StringUtil.java,v $
 *    Revision 1.1.1.1  2003/05/23 11:19:34  lionel
 *    Initial import of upstream 13 Feb 2003 CVS
 *
 *    Revision 1.1  2003/01/18 14:37:24  david__schmidt
 *    Initial checkin of directory structure and source code of the java Activity
 *    Console
 *
 *********************************************************************/

package org.privoxy.activityconsole;

/** 
 * Utility string functions.
 * @author Last Modified By: $Author: lionel $
 * @version $Rev$-$Date: 2003/05/23 11:19:34 $$State: Exp $
 */
class StringUtil
{
  private static final String
    COPYRIGHT = org.privoxy.activityconsole.Copyright.COPYRIGHT;

  /****************************************************************************
  * This method replaces the preValue with the postValue in the originalString.
  *
  * @param originalString the string to have replacements
  * @param preValue The substring value that the string currently contains
  * @param postValue The substring value to replace the preValue
  * @param recursive true if replacements should occur recursively
  *
  * @return String representing the substituted value(s)
  ****************************************************************************/
  public static final String replaceSubstring( String originalString
                                               , String preValue
                                               , String postValue
                                               , boolean recursive
                                             )
  {
    String finalString = originalString;
    int previousFind = originalString.length();

    int index = originalString.lastIndexOf(preValue);
    while (index > -1        &&
           index < previousFind
          )
    {
      previousFind = index;

      finalString = originalString.substring(0,index)
                    + postValue
                    + finalString.substring(index+preValue.length());

      index = finalString.lastIndexOf(preValue,previousFind);
      if (!recursive)
      {
        if (index == previousFind)
          previousFind--;
        index = finalString.lastIndexOf(preValue,previousFind);
      }
    }

    return finalString;
  }

  /****************************************************************************
  * This method replaces the preValue with the postValue in the originalString.
  *
  * @param originalString the string to have replacements
  * @param preValue The substring value that the string currently contains
  * @param postValue The substring value to replace the preValue
  *
  * @return String representing the substituted value(s)
  ****************************************************************************/
  public static final String replaceSubstring( String originalString
                                               , String preValue
                                               , String postValue
                                             )
  {
    return(replaceSubstring(originalString, preValue, postValue, false));
  }
}
