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 }