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 }