001    /*
002     * Copyright (c) 2009 The openGion Project.
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,
013     * either express or implied. See the License for the specific language
014     * governing permissions and limitations under the License.
015     */
016    package org.opengion.plugin.column;
017    
018    import org.opengion.fukurou.util.StringUtil;
019    import org.opengion.hayabusa.db.AbstractDBType;
020    
021    /**
022     * Unicodeæ–?­—å?ã®å€¤ã‚?HTML ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—記å·(&#xZZZZ;)ã«å¤‰æ›ã™ã‚‹ã€ã‚«ãƒ©ãƒ?±žæ?を定義ã—ã¾ã™ã?
023     *
024     * SJIS(JA16SJIS) ã§ä½œæ?ã•れãŸãƒ‡ãƒ¼ã‚¿ãƒ™ã?スã«ã€?NVARCHAR2)を使用ã—ã¦ä¸­å›½èªžç­‰ã‚’登録ã™ã‚‹ã®ã¯
025     * éžå¸¸ã«è¤?›‘ã§ã‹ã¤ã€ãƒªã‚¹ã‚¯ãŒå¤§ãã„処ç?«ãªã‚Šã¾ã™ã?
026     * ORACLE殿ã§ã‚‚ã?自信をæŒã£ã¦ã¯å‹§ã‚られãªã?©Ÿè?ã¨ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’é ‚ã„ã¦ã?¾ã™ã?
027     * ãã“ã§ã€HTMLã§ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—文字を使用ã—ã¦ã€Unicodeを文字å?化ã—ã¦ç™»éŒ²ã™ã‚‹ç‚ºã®
028     * DBType ã¨ã—ã¦ã€æ–°è¦ã«ä½œæ?ã—ã¾ã™ã?
029     * ã“ã“ã§ã¯ã€å?力文字をã€ã‚­ãƒ£ãƒ©ã‚¯ã‚¿(char)åž‹ã«åˆ?§£ã—ã?(&#xZZZZ;)ã«å¤‰æ›ã—ã¦ã?ã¾ã™ã?
030     * よã£ã¦ã€??常ã«?‘æ–‡å­?Shift-JISã§?’Byte,UTF-8ã§?“Byte)ãŒã??˜Byteã«ãªã‚Šã¾ã™ã?
031     * ã“ã?変æ›ã•ã‚ŒãŸæ–‡å­—å?ã‚’ã?HTML上ã§ãã?ã¾ã¾å–り出ã™ã¨ã€å?ã®Unicodeæ–?­—ã«æˆ»ã‚‹ç‚ºã€?
032     * 通常ã®Shift-JISã§ã¯ã€æ‰±ãˆãªã?–‡å­?中国語ãªã©)ã§ã‚‚表示å¯èƒ½ã«ãªã‚Šã¾ã™ã?
033     *
034     * (NVARCHAR2)を使用ã—ã¦ä¸­å›½èªžç­‰ã‚’登録ã™ã‚‹å ´åˆã?æ–?­—コード変æ›
035     *
036     * APレイヤ     ãƒãƒƒãƒˆãƒ¬ã‚¤ãƒ¤                        DBレイヤ
037     * æ–?­—å?åŠ? â†?å…¨ã¦DBã®CHARã‚»ãƒ?ƒˆã«å¤‰æ›  â†? NCHARã®åˆ? ã‘UTFã«å¤‰æ›
038     * (UTF)      (S-jis)                         (UTF)
039     *
040     * タイプãƒã‚§ãƒ?‚¯ã¯ã€HTMLã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—記å·(&#xZZZZ;)ã«å¤‰æ›å¾Œã«å®Ÿæ–½ã•れã¾ã™ã?
041     * ãƒ??タベã?スã¸ã®ç™»éŒ²ã«ã¯ã€åŠè§’英数字ã«ãªã‚Šã¾ã™ã?
042     * ・æ–?­—å?é•·ã¯ã€Byteæ›ç®—ã§ã®æ–?­—æ•°ã¨ã®æ¯”è¼?
043     * ・åŠè§’文字å?ãƒã‚§ãƒ?‚¯ã€?c < 0x20 || c > 0x7e 以外ã?エラー
044     * ・æ–?­—パラメータ㮠正è¦è¡¨ç¾ãƒã‚§ãƒ?‚¯
045     * ・クロスサイトスクリプティングãƒã‚§ãƒ?‚¯
046     *
047     * @og.rev 3.8.0.0 (2005/06/07) æ–°è¦ä½œæ?
048     * @og.group ãƒ??タ属æ?
049     *
050     * @version  4.0
051     * @author       Kazuhiko Hasegawa
052     * @since    JDK5.0,
053     */
054    public class DBType_NVAR extends AbstractDBType {
055            //* ã“ã?プログラãƒ??VERSIONæ–?­—å?を設定ã—ã¾ã™ã?       {@value} */
056            private static final String VERSION = "4.0.0.0 (2005/08/31)" ;
057    
058            /**
059             * åŠè§’ï¼æ–‡å­—ã?固定長ã§FILL埋ã‚ã•ã‚ŒãŸæ–‡å­—å?ã‚’è¿”ã—ã¾ã™ã?
060             * ãªãŠã?エラーãƒã‚§ãƒ?‚¯ã¯è¡Œã‚れã¾ã›ã‚“ã€?
061             * 実行å‰ã«ã€å¿?š valueCheck( String value ,int len ) ãŒè¡Œã‚れるå¿?¦ãŒã‚りã¾ã™ã?
062             *
063             * @param       value    ?¦?©?¬?¬åŸ‹ã‚ã™ã‚‹æ–?­—å?
064             * @param       sizeX    整数部åˆ??æ–?­—å?ã®é•·ã?
065             * @param       sizeY    少数部åˆ??æ–?­—å?ã®é•·ã?
066             * @param       encode   エンコード指�
067             *
068             * @return      ?¦?©?¬?¬åŸ‹ã‚ã—ãŸæ–°ã—ã„æ–?­—å?
069             */
070            @Override
071            public String valueFill( final String value ,final int sizeX ,final int sizeY,final String encode ) {
072                    return valueSet( super.valueFill( value,sizeX,sizeY,encode ) );
073            }
074    
075            /**
076             * Stringå¼•æ•°ã®æ–?­—å?を+1ã—ãŸæ–‡å­—å?ã‚’è¿”ã—ã¾ã™ã?
077             * ã“れã¯ã€è‹±å­—ã?å ´å?A,B,C ãªã©)ã¯ã€B,C,D ã®ã‚ˆã†ã«,æœ?µ‚æ¡ã?æ–?­—コードを
078             * ?‹ï¼?ã—ã¾ã™ã?
079             * æ–?­—å?ãŒæ•°å­—タイプã?å ´åˆã?, æ•°å­—ã«å¤‰æ›ã—ã¦ã€?1 ã—ã¾ã™ã?(æ¡ä¸ŠãŒã‚Šã‚‚ã‚り)
080             * 混在タイプã?å ´åˆã?,æœ?¾Œã?æ¡ã ã‘を確èªã—㦠?‹ï¼‘ã—ã¾ã™ã?
081             * 引数ã?null ã®å ´åˆã¨ã€ã‚¼ãƒ­æ–?­—å?("")ã®å ´åˆã?,物ç?š„åˆæœŸè¨­å®šå?(String getDefault())
082             * ã®å€¤ã‚’è¿”ã—ã¾ã™ã?
083             *
084             * @param       value   Stringå¼•æ•°ã®æ–?­—å?
085             *
086             * @return      Stringå¼•æ•°ã®æ–?­—å?を+1ã—ãŸæ–‡å­—å?
087             */
088            @Override
089            public String valueAdd( final String value ) {
090                    return valueSet( super.valueAdd( value ) );
091            }
092    
093            /**
094             * エãƒ?‚£ã‚¿ãƒ¼ã§ç·¨é›?•れãŸãƒ??タを登録ã™ã‚‹å ´åˆã«ã€ãƒ‡ãƒ¼ã‚¿ãã?ã‚‚ã?ã‚?
095             * 変æ›ã—ã¦ã€å®Ÿç™»éŒ²ãƒ??タを作æ?ã—ã¾ã™ã?
096             * 例ãˆã°,大æ–?­—ã?ã¿ã®ãƒ•ィールドãªã‚‰ã?大æ–?­—化ã—ã¾ã™ã?
097             * 実登録ãƒ??ã‚¿ã®ä½œæ?ã¯ã€DBType オブジェクトを利用ã—ã¾ã™ã?ã§,
098             * ã“れ㨠Editor ã¨ãŒã‚¢ãƒ³ãƒžãƒƒãƒã?å ´åˆã?ã€ã†ã¾ãデータ変æ›
099             * ã•れãªã?¯èƒ½æ€§ãŒã‚りã¾ã™ã?ã§ã€æ³¨æ„願ã„ã¾ã™ã?
100             *
101             * @param       value   (ä¸?ˆ¬ã«ç·¨é›?ƒ‡ãƒ¼ã‚¿ã¨ã—ã¦ç™»éŒ²ã•れãŸãƒ‡ãƒ¼ã‚¿)
102             *
103             * @return      修正後ã?æ–?­—å?(ä¸?ˆ¬ã«ãƒ??タベã?スã«ç™»éŒ²ã™ã‚‹ãƒ??ã‚¿)
104             */
105            @Override
106            public String valueSet( final String value ) {
107                    return StringUtil.getUnicodeEscape( value );
108            }
109    }