/*
 * このソースコードは blanco Frameworkによって自動生成されています。
 */
package blanco.mail.core;

import blanco.mail.core.resourcebundle.BlancoMailSettingResourceBundle;
import blanco.mail.core.valueobject.BlancoMailSetting;

/**
 * BlancoMailSettingのインスタンスは、このクラスから取得してください。
 *
 * バリューオブジェクト[BlancoMailSetting]のインスタンスを適切なデフォルト値付で取得するためのクラス。
 */
public class BlancoMailSettingFactory {
    /**
     * コンストラクタは隠します。
     */
    private BlancoMailSettingFactory() {
    }

    /**
     * バリューオブジェクト[BlancoMailSetting]のインスタンスを取得します。
     *
     * リソースバンドル(基底名:BlancoMailSetting, クラス名:BlancoMailSettingResourceBundle)からデフォルト値の読み込みを試みます。
     *
     * @return デフォルト値が調整済みの[BlancoMailSetting]バリューオブジェクト。
     */
    public static BlancoMailSetting getInstance() {
        // このメソッドの実行結果となるバリューオブジェクトインスタンス。
        final BlancoMailSetting result = new BlancoMailSetting();

        // バリューオブジェクトに設定するデフォルト値のためのデータソースインスタンス。
        final BlancoMailSettingResourceBundle bundle = new BlancoMailSettingResourceBundle();

        // フィールド [SEND_HOST]
        if (bundle.getSendHost() != null && bundle.getSendHost().length() > 0) {
            result.setSendHost(bundle.getSendHost());
        }

        // フィールド [SEND_PORT]
        if (bundle.getSendPort() != null && bundle.getSendPort().length() > 0) {
            try {
                result.setSendPort(Integer.parseInt(bundle.getSendPort()));
            } catch (NumberFormatException e) {
                // 無視します。
            }
        }

        // フィールド [SEND_USE_SSL]
        if (bundle.getSendUseSsl() != null && bundle.getSendUseSsl().length() > 0) {
            result.setSendUseSsl("true".equals(bundle.getSendUseSsl()));
        }

        // フィールド [SEND_USER_NAME]
        if (bundle.getSendUserName() != null && bundle.getSendUserName().length() > 0) {
            result.setSendUserName(bundle.getSendUserName());
        }

        // フィールド [SEND_PASSWORD]
        if (bundle.getSendPassword() != null && bundle.getSendPassword().length() > 0) {
            result.setSendPassword(bundle.getSendPassword());
        }

        // フィールド [SEND_PROTOCOL]
        if (bundle.getSendProtocol() != null && bundle.getSendProtocol().length() > 0) {
            result.setSendProtocol(bundle.getSendProtocol());
        }

        // フィールド [SEND_SMTP_AUTH]
        if (bundle.getSendSmtpAuth() != null && bundle.getSendSmtpAuth().length() > 0) {
            result.setSendSmtpAuth("true".equals(bundle.getSendSmtpAuth()));
        }

        // フィールド [SEND_LOCAL_HOST]
        if (bundle.getSendLocalHost() != null && bundle.getSendLocalHost().length() > 0) {
            result.setSendLocalHost(bundle.getSendLocalHost());
        }

        // フィールド [RECEIVE_HOST]
        if (bundle.getReceiveHost() != null && bundle.getReceiveHost().length() > 0) {
            result.setReceiveHost(bundle.getReceiveHost());
        }

        // フィールド [RECEIVE_PORT]
        if (bundle.getReceivePort() != null && bundle.getReceivePort().length() > 0) {
            try {
                result.setReceivePort(Integer.parseInt(bundle.getReceivePort()));
            } catch (NumberFormatException e) {
                // 無視します。
            }
        }

        // フィールド [RECEIVE_USE_SSL]
        if (bundle.getReceiveUseSsl() != null && bundle.getReceiveUseSsl().length() > 0) {
            result.setReceiveUseSsl("true".equals(bundle.getReceiveUseSsl()));
        }

        // フィールド [RECEIVE_USER_NAME]
        if (bundle.getReceiveUserName() != null && bundle.getReceiveUserName().length() > 0) {
            result.setReceiveUserName(bundle.getReceiveUserName());
        }

        // フィールド [RECEIVE_PASSWORD]
        if (bundle.getReceivePassword() != null && bundle.getReceivePassword().length() > 0) {
            result.setReceivePassword(bundle.getReceivePassword());
        }

        // フィールド [RECEIVE_PROTOCOL]
        if (bundle.getReceiveProtocol() != null && bundle.getReceiveProtocol().length() > 0) {
            result.setReceiveProtocol(bundle.getReceiveProtocol());
        }

        // フィールド [RECEIVE_POP3_APOP]
        if (bundle.getReceivePop3Apop() != null && bundle.getReceivePop3Apop().length() > 0) {
            result.setReceivePop3Apop("true".equals(bundle.getReceivePop3Apop()));
        }

        // フィールド [MAIL_CONNECTION_TIMEOUT]
        if (bundle.getMailConnectionTimeout() != null && bundle.getMailConnectionTimeout().length() > 0) {
            try {
                result.setMailConnectionTimeout(Integer.parseInt(bundle.getMailConnectionTimeout()));
            } catch (NumberFormatException e) {
                // 無視します。
            }
        }

        // フィールド [MAIL_TIMEOUT]
        if (bundle.getMailTimeout() != null && bundle.getMailTimeout().length() > 0) {
            try {
                result.setMailTimeout(Integer.parseInt(bundle.getMailTimeout()));
            } catch (NumberFormatException e) {
                // 無視します。
            }
        }

        // フィールド [SESSION_LOG_DIRECTORY_ERROR]
        if (bundle.getSessionLogDirectoryError() != null && bundle.getSessionLogDirectoryError().length() > 0) {
            result.setSessionLogDirectoryError(bundle.getSessionLogDirectoryError());
        }

        // フィールド [SESSION_LOG_DIRECTORY_SUCCESS]
        if (bundle.getSessionLogDirectorySuccess() != null && bundle.getSessionLogDirectorySuccess().length() > 0) {
            result.setSessionLogDirectorySuccess(bundle.getSessionLogDirectorySuccess());
        }

        // フィールド [SESSION_LOG_OUTPUT_WITH_NO_RECEIVE_PROCESS]
        if (bundle.getSessionLogOutputWithNoReceiveProcess() != null && bundle.getSessionLogOutputWithNoReceiveProcess().length() > 0) {
            result.setSessionLogOutputWithNoReceiveProcess("true".equals(bundle.getSessionLogOutputWithNoReceiveProcess()));
        }

        // フィールド [SOCKETFACTORY_CLASS]
        if (bundle.getSocketfactoryClass() != null && bundle.getSocketfactoryClass().length() > 0) {
            result.setSocketfactoryClass(bundle.getSocketfactoryClass());
        }

        // フィールド [SOCKETFACTORY_FALLBACK]
        if (bundle.getSocketfactoryFallback() != null && bundle.getSocketfactoryFallback().length() > 0) {
            result.setSocketfactoryFallback("true".equals(bundle.getSocketfactoryFallback()));
        }

        // フィールド [TEST_MODE]
        if (bundle.getTestMode() != null && bundle.getTestMode().length() > 0) {
            result.setTestMode("true".equals(bundle.getTestMode()));
        }

        // フィールド [TEST_MODE_LOG_DIRECTORY_SEND]
        if (bundle.getTestModeLogDirectorySend() != null && bundle.getTestModeLogDirectorySend().length() > 0) {
            result.setTestModeLogDirectorySend(bundle.getTestModeLogDirectorySend());
        }

        // フィールド [TEST_MODE_LOG_DIRECTORY_RECEIVE]
        if (bundle.getTestModeLogDirectoryReceive() != null && bundle.getTestModeLogDirectoryReceive().length() > 0) {
            result.setTestModeLogDirectoryReceive(bundle.getTestModeLogDirectoryReceive());
        }

        // フィールド [SEND_MAILER_NAME]
        if (bundle.getSendMailerName() != null && bundle.getSendMailerName().length() > 0) {
            result.setSendMailerName(bundle.getSendMailerName());
        }

        // フィールド [SEND_ENCODING]
        if (bundle.getSendEncoding() != null && bundle.getSendEncoding().length() > 0) {
            result.setSendEncoding(bundle.getSendEncoding());
        }

        // フィールド [SEND_FORTH_CONTENT_TRANSFER_ENCODING_7BIT]
        if (bundle.getSendForthContentTransferEncoding7bit() != null && bundle.getSendForthContentTransferEncoding7bit().length() > 0) {
            result.setSendForthContentTransferEncoding7bit("true".equals(bundle.getSendForthContentTransferEncoding7bit()));
        }

        // フィールド [SEND_FORTH_NEWLINE_AFTER_MESSAGE_TEXT]
        if (bundle.getSendForthNewlineAfterMessageText() != null && bundle.getSendForthNewlineAfterMessageText().length() > 0) {
            result.setSendForthNewlineAfterMessageText("true".equals(bundle.getSendForthNewlineAfterMessageText()));
        }

        // フィールド [SEND_USE_FROM_ADDRESS_AS_MESSAGE_ID]
        if (bundle.getSendUseFromAddressAsMessageId() != null && bundle.getSendUseFromAddressAsMessageId().length() > 0) {
            result.setSendUseFromAddressAsMessageId("true".equals(bundle.getSendUseFromAddressAsMessageId()));
        }

        // フィールド [SEND_MAX_RECIPIENT_ADDR_TO]
        if (bundle.getSendMaxRecipientAddrTo() != null && bundle.getSendMaxRecipientAddrTo().length() > 0) {
            try {
                result.setSendMaxRecipientAddrTo(Integer.parseInt(bundle.getSendMaxRecipientAddrTo()));
            } catch (NumberFormatException e) {
                // 無視します。
            }
        }

        // フィールド [SEND_MAX_RECIPIENT_ADDR_CC]
        if (bundle.getSendMaxRecipientAddrCc() != null && bundle.getSendMaxRecipientAddrCc().length() > 0) {
            try {
                result.setSendMaxRecipientAddrCc(Integer.parseInt(bundle.getSendMaxRecipientAddrCc()));
            } catch (NumberFormatException e) {
                // 無視します。
            }
        }

        // フィールド [SEND_MAX_TOTAL_ATTACHMENT_SIZE]
        if (bundle.getSendMaxTotalAttachmentSize() != null && bundle.getSendMaxTotalAttachmentSize().length() > 0) {
            try {
                result.setSendMaxTotalAttachmentSize(Integer.parseInt(bundle.getSendMaxTotalAttachmentSize()));
            } catch (NumberFormatException e) {
                // 無視します。
            }
        }

        // フィールド [RECEIVE_MAX_MESSAGE_SIZE]
        if (bundle.getReceiveMaxMessageSize() != null && bundle.getReceiveMaxMessageSize().length() > 0) {
            try {
                result.setReceiveMaxMessageSize(Integer.parseInt(bundle.getReceiveMaxMessageSize()));
            } catch (NumberFormatException e) {
                // 無視します。
            }
        }

        // フィールド [RECEIVE_FILTER_BY_SUBJECT]
        if (bundle.getReceiveFilterBySubject() != null && bundle.getReceiveFilterBySubject().length() > 0) {
            result.setReceiveFilterBySubject(bundle.getReceiveFilterBySubject());
        }

        return result;
    }
}
