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    }