/*
 * Aipo is a groupware program developed by Aimluck,Inc.
 * Copyright (C) 2004-2011 Aimluck,Inc.
 * http://www.aipo.com
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.aimluck.eip.mail.db;

import org.apache.jetspeed.services.logging.JetspeedLogFactoryService;
import org.apache.jetspeed.services.logging.JetspeedLogger;

import com.aimluck.eip.mail.ALFolder;
import com.aimluck.eip.mail.ALMailHandler;
import com.aimluck.eip.mail.ALMailReceiver;
import com.aimluck.eip.mail.ALMailReceiverContext;
import com.aimluck.eip.mail.ALMailSender;
import com.aimluck.eip.mail.ALMailSenderContext;
import com.aimluck.eip.mail.beans.ALMailSearchCondition;

/**
 * データベースを利用し、メールの送受信を操作するクラスです。 <br />
 * 
 */
public class ALDbMailHandler extends ALMailHandler {

  @SuppressWarnings("unused")
  private static final JetspeedLogger logger =
    JetspeedLogFactoryService.getLogger(ALDbMailHandler.class.getName());

  /**
   * コンストラクタ
   */
  public ALDbMailHandler() {
  }

  public static ALMailHandler getInstance() {
    return new ALDbMailHandler();
  }

  @Override
  protected ALMailReceiver getALMailReceiver(ALMailReceiverContext rcontext) {
    return new ALDbPop3MailReceiver(rcontext);
  }

  @Override
  public ALMailSender getALMailSender(ALMailSenderContext scontext) {
    return new ALDbSmtpMailSender(scontext);
  }

  @Override
  public ALMailSender getALAdminMailSender(ALMailSenderContext scontext) {
    return new ALDbSmtpMailSender(scontext);
  }

  @Override
  public ALFolder getALFolder(int type_mail, String org_id, int user_id,
      int account_id) {
    return new ALDbLocalFolder(type_mail, org_id, user_id, account_id);
  }

  // add by motegi start 全文検索
  @Override
  public ALFolder getALFolder(int type_mail, String org_id, int user_id,
      int account_id, ALMailSearchCondition cond) {
    return new ALDbLocalFolder(type_mail, org_id, user_id, account_id, cond);
  }

  // add end

  /**
   * アカウントフォルダを削除する．
   * 
   * @param userRootFolderName
   * @param accountName
   * @return
   */
  @Override
  public boolean removeAccount(String org_id, int user_id, int account_id) {
    return true;
  }

}
