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.hayabusa.mail; 017 018 import java.util.Map; 019 import java.util.TreeMap; 020 021 import org.opengion.hayabusa.db.DBColumn; 022 import org.opengion.hayabusa.db.DBTableModelUtil; 023 import org.opengion.hayabusa.resource.ResourceManager; 024 import org.opengion.hayabusa.db.DBTableModel; 025 026 /** 027 * タグ mailSender2 による送信を行う際に利用するメール送信マネージャの処?ラスです? 028 * タグ mailSender2 よりパラメータマップを受取って、メール??合???信を行います? 029 * バッ??信する場合と共通する部??スーパ?クラス AbstractMailManager に実?て?すが? 030 * タグ独自ロジ?の部??本クラスより実?行って?す? 031 * 独自ロジ?はセ?ョンから取得した宛???ブルにより宛?マップを作?、セ?ョンから取得したメール 032 * ?より送信を行うロジ?とあります? 033 * 034 * @og.group メールモジュール 035 * 036 * @version 4.0 037 * @author Sen.Li 038 * @since JDK1.6 039 */ 040 public class MailManager_DIRECT extends AbstractMailManager { 041 042 private static final String[] names = { "DST_ID", "GROUP_ID", "GROUP_NAME", "DST_NAME", "DST_ADDR", "DST_KBN", "FGJ_MAIL" }; 043 private static final int IDX_DST_ID = 0; 044 private static final int IDX_FGJ_MAIL = 6; 045 // private DBColumn[] dbColumn = null; 046 private ResourceManager resource = null; 047 048 /** 049 * action="SEND"の時にこ?メソ?が呼ばれます? 050 * セ?ョンから取得した宛???ブルにより宛?マップを作?します? 051 * ま??action="CHECK"の時に、確認画面から添付ファイルを追?るケースがあるため? 052 * パラメータを?読込を行います?そして、action="SEND"の時に添付ファイルを?信します? 053 * 054 * @param params パラメータのマッ? 055 * @param table DBTableModelオブジェク? 056 * 057 */ 058 public void create( final Map<String, String> params, final DBTableModel table ){ 059 // 5.6.6.0 (2013/07/05) host?対? 060 MailPattern mailObj = new MailPattern( params ); 061 setHost(mailObj.getHost()); 062 setPort(mailObj.getSmtpPort()); 063 setAuth(mailObj.getAuth()); 064 setAuthUser(mailObj.getAuthUser()); 065 setAuthPass(mailObj.getAuthPass()); 066 067 setInitParams( params ); 068 setAttachFiles( params.get( "ATTACH1" ) 069 , params.get( "ATTACH2" ) 070 , params.get( "ATTACH3" ) 071 , params.get( "ATTACH4" ) 072 , params.get( "ATTACH5" )); 073 Map <String, String[]> dstMap = makeMailDstMap( table ); 074 setMailDstMap( dstMap ); 075 } 076 077 /** 078 * 画面に??の送信状況を表示するために??信の宛?マップに基づ???ブルモ?を作?します? 079 * 作?されたテーブルモ?を指定されるスコープに入れます? 080 * 081 * @og.rev 5.1.9.0 (2010/08/01) keySet() ?entrySet() に変更 082 * 083 * @return 宛?マップに基づ???ブルモ? 084 */ 085 public DBTableModel makeDstTable(){ 086 Map<String, String[]> mailDst = getMailDstMap(); 087 DBTableModel table; 088 int numberOfColumns = names.length; 089 090 table = DBTableModelUtil.newDBTable(); 091 table.init( numberOfColumns ); 092 setTableDBColumn( table, names ); 093 094 // for( String dstId : mailDst.keySet() ) { 095 // String[] dstInfo = mailDst.get( dstId ); 096 // table.addColumnValues( dstInfo ); 097 // } 098 099 // 5.1.9.0 (2010/08/01) keySet() ?entrySet() に変更 100 for( Map.Entry<String, String[]> en : mailDst.entrySet() ) { 101 table.addColumnValues( en.getValue() ); 102 } 103 104 return table; 105 } 106 107 /** 108 * リソースマネージャーをセ?します? 109 * これは、??ロケール)に応じ?DBColumn をあらかじめ設定しておく為に 110 * ?です? 111 * リソースマネージャーが設定されて???また?、所定?キーの DBColumn ? 112 * リソースに存在しな??合?、?部で DBColumn オブジェクトを作?します? 113 * 114 * @param res リソースマネージャー 115 */ 116 // 注意:この resource は、実質利用されて?せん? 117 public void setResourceManager( final ResourceManager res ) { 118 resource = res; 119 } 120 121 /** 122 * DBColumn オブジェクトを??ブルモ?に設定します? 123 * 124 * @param table DBTableModelオブジェク? 125 * @param names カラ?配? 126 */ 127 // 注意:この dbColumn は、実質利用されて?せん? 128 protected void setTableDBColumn( final DBTableModel table, final String[] names ) { 129 // dbColumn = new DBColumn[names.length] ; 130 for( int i=0; i<names.length; i++ ) { 131 DBColumn clm = resource.makeDBColumn( names[i] ); 132 table.setDBColumn( i,clm ); 133 // dbColumn[i] = clm; 134 } 135 } 136 137 /** 138 * セ?ョンから取得した宛???ブルにより宛?マップを作?します? 139 * 宛???ブルの?コードに対して?送信?"となって?レコード?み宛?マップに入れるようにして?す? 140 * 141 * @param table セ?ョンから取得した宛???ブル 142 * 143 * @return 宛?マッ? 144 */ 145 private Map<String, String[]> makeMailDstMap( final DBTableModel table ){ 146 Map<String, String[]> dstMap = new TreeMap<String, String[]>(); 147 int rowCount = table.getRowCount(); 148 int colCount = names.length; 149 for( int i = 0; i < rowCount; i++ ) { 150 String[] tmpDst = new String[colCount]; 151 if( AbstractMailManager.FGJ_SEND_WAIT.equals( table.getValue( i, IDX_FGJ_MAIL ) ) ) { 152 for( int j = 0; j < colCount; j++ ) { 153 tmpDst[j] = table.getValue( i, j ); 154 } 155 dstMap.put( tmpDst[IDX_DST_ID], tmpDst ); 156 } 157 } 158 159 return dstMap; 160 } 161 }