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.daemon;
017    
018    import org.opengion.hayabusa.common.HybsSystem;
019    import org.opengion.fukurou.util.LogWriter;
020    import org.opengion.fukurou.util.StringUtil;
021    import org.opengion.fukurou.util.HybsTimerTask;
022    import org.opengion.fukurou.util.URLConnect;
023    import org.opengion.fukurou.util.XHTMLTag;
024    
025    import java.io.IOException;
026    import java.util.Date;
027    
028    /**
029     * 【URLアクセスã€?
030     * æŒ?®šしたパラメータでURLに接続しますã?
031     * こã?クラスは、HybsTimerTask を継承した タイマã?タスククラスですã?
032     * startDaemon() がタイマã?タスクによって、呼び出されますã?
033     *
034     * 接続ã?ためのパラメータは以下でã�?
035     * url                   : 接続å?URL(å¿??)
036     * proxyHost     : プロキシのホスト名
037     * proxyPort     : プロキシのポã?ト番号
038     * useSystemUser : ãƒ?ƒ•ォルトã?ユーザ/パスワードを利用するã�?初期値:true)
039     *                                      trueの場合ã?SYSTEM:*********を利用しますã?
040     * authUserPass  : ユーザとパスワードをUSER:PASSWORDの形で記述
041     * keys                  : リクエストパラメータのキー(カンマ区åˆ?‚Š)
042     * vals                  : リクエストパラメータの値(カンマ区åˆ?‚Š)
043     * method                : POSTかGETを指å®?初期値:GET)
044     * debug                 : 接続したã?ージを受信して、ログに書きå?しまã�?初期値:false)
045     *
046     * 接続エラー時ã?ログはファイル(SYS_LOG_URL)に出力されますã?
047     *
048     * @og.rev 4.3.4.4 (2009/01/01) 新規作æ?
049     * @og.group ãƒ??モン
050     *
051     * @version  4.0
052     * @author   Takahashi Masakazu
053     * @since    JDK5.0,
054     */
055    public class Daemon_URLConnect extends HybsTimerTask {
056            //* こã?プログラãƒ??VERSIONæ–?­—å?を設定しますã?       {@value} */
057            private static final String VERSION = "4.3.4.4 (2009/01/01)" ;
058    
059            private static final String DEFAULT_USER = "SYSTEM:MANAGER" ;
060            private static final int LOOP_COUNTER = 24; // カウンタã‚?4回に設å®?
061    
062            private int loopCnt = 0;
063    
064            private boolean debug = false;
065            private boolean useSystemUser   = true;
066            private String  method                  = "GET";
067            private String  urlStr                  = null;
068            private int             proxyPort               = -1;
069    
070            private URLConnect conn                 = null;
071    
072            /**
073             * こã?タイマã?タスクによって初期化されるアクションですã?
074             * パラメータを使用した初期化を行いますã?
075             *
076             */
077            @Override
078            public void initDaemon() {
079                    debug = StringUtil.nval( getValue( "DEBUG" ),debug ) ;
080                    useSystemUser           = StringUtil.nval( getValue( "useSystemUser" ), useSystemUser );
081                    method                          = StringUtil.nval( getValue( "method" ), method );
082                    urlStr                          = getValue( "url" );
083                    proxyPort                       = StringUtil.nval( getValue( "proxyPort" ), proxyPort );
084                    String proxyHost        = getValue( "proxyHost" );
085                    String keys                     = getValue( "keys" );
086                    String vals                     = getValue( "vals" );
087                    String authUserPass     = getValue( "authUserPass" );
088    
089                    if( useSystemUser ) { authUserPass = DEFAULT_USER; }
090    
091                    String urlEnc = XHTMLTag.urlEncode( keys,vals );
092    
093                    if( ! "POST".equals( method ) ) {
094                            urlStr = XHTMLTag.addUrlEncode( urlStr,urlEnc );
095                    }
096                    conn = new URLConnect( urlStr,authUserPass );
097    
098                    if( proxyHost != null ) {
099                            conn.setProxy( proxyHost,proxyPort );
100                    }
101    
102                    if( "POST".equals(method) && keys != null && vals != null ) {
103                            conn.setPostData( urlEnc );
104                    }
105            }
106    
107            /**
108             * タイマã?タスクのãƒ??モン処ç�??開始ã?イントですã?
109             *
110             */
111            @Override
112            protected void startDaemon() {
113                    if( loopCnt % LOOP_COUNTER == 0 ) {
114                            loopCnt = 1;
115                            System.out.println( toString() + " " + new Date()  + " " );
116                    }
117                    else {
118                            loopCnt++ ;
119                    }
120                    // URLへのconnect及ã?ãƒ??タ取得実è¡?
121                    try{
122                            conn.connect();
123    
124                            if(debug){
125                                    // System.out.println( conn.readData() );
126                                    String debugMsg = "Daemon_URLConnect:url=[" + urlStr + "]" + HybsSystem.CR
127                                                                    + conn.readData();
128                                    LogWriter.log( debugMsg );
129                            }
130                    }
131                    catch( IOException ex ) {
132                            System.out.println(ex);
133                            String errMsg = "Daemon_URLConnect:ãƒ??タ取得中にエラーが発生しましたã€? + HybsSystem.CR
134                                                    + " url=[" + urlStr + "]" + HybsSystem.CR
135                                                    + ex;
136                            LogWriter.log( errMsg );
137                    }
138                    finally {
139                            if( conn != null ) { conn.disconnect(); }
140                    }
141            }
142    
143            /**
144             * こã?タイマã?タスクのcancel() メソãƒ?ƒ‰をオーバã?ライドしますã?
145             * HybsTimerTaskManager#cancelTask( int ) を実行しますã?
146             *
147             * @og.rev 4.3.1.1 (2008/08/23) super.cancel() のみ実行ならã?オーバã?ライドã?å¿?¦�ã?なã�?
148             *
149             * @see java.util.TimerTask#cancel()
150             */
151    //      public boolean cancel() {
152    //              return super.cancel();
153    //      }
154    }