/*****************************************************
 * フォーム入力値の変換
 * Copyright(C) 2001 A-tak, Japan
 *
 *   @since   2001.05.26
 *   @author  A-tak
 *
 ****************************************************/
package net.dynodns.atak.web;

import java.lang.String;

/**
 * フォーム入力値変換クラス
 * フォームから受け取った値で"や'などの不適正な値を修正する
 * Copyright(C) 2001 A-tak, Japan
 *
 *   @see       
 *   @version   1.0
 *   @since     2001.05.26
 *   @author    A-tak
 */
public class StringReplace {


        public StringReplace(){
        }

/**
 * 特殊文字の変換
 * フォームからの値をDB登録に適正な形に変換する
 *      @param          String                  value           変換元文字列
 *      @return         String                                          処理結果
 */
        public String convInput(String value){
                value = replacer(value, "\\", "\\\\");
                value = replacer(value, "\'", "\\\'");
                value = replacer(value, "\"", "\\\"");
        
                return value;
        }

/**
 * 特殊文字の変換
 *  与えられた文字列から@Aを探し@Bに置き換える
 *      @param          String          value           文字列
 *      @param          String          target          検索文字
 *      @param          String          conv            置換文字列
 *      @return         String                                  処理結果
 */
        private String replacer(String value, String target, String conv) {
            int newpos = 0;

                for (;;) {
                        String front;           //対象前方文字
                        String back;            //対象後方文字
                    int pos = value.indexOf(target, newpos);    //置換対象検索
                    if(pos==-1) break;
                    front = value.substring(0,pos);                     //対象より前の文字を切り取り
                    back = value.substring(pos + target.length());      //対象より後の文字を切り取り
                    value = front + conv + back;                                //結合
                    newpos = pos + conv.length();                       //検索カーソルを移動
                }
                return value;
        }
}