package com.constellio.model.conf.email; import java.util.HashMap; import java.util.Map; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; import org.jdom2.Document; import org.jdom2.Element; public class EmailConfigurationManagerReader { private static final Logger LOGGER = LogManager.getLogger(EmailConfigurationManagerReader.class); Document document; public EmailConfigurationManagerReader(Document document) { this.document = document; } public EmailServerConfiguration readEmailServerConfiguration(String collection) { Element rootElement = document.getRootElement(); Element serverConfigElement = rootElement.getChild(collection); if (serverConfigElement == null) { return null; } return buildConfiguration(serverConfigElement); } private EmailServerConfiguration buildConfiguration(Element serverConfigElement) { String username = serverConfigElement.getChild(EmailConfigurationsManager.USERNAME).getText(); String password = serverConfigElement.getChild(EmailConfigurationsManager.PASSWORD).getText(); String defaultSenderEmail = serverConfigElement.getChild(EmailConfigurationsManager.DEFAULT_SENDER_EMAIL).getText(); Element enabledElement = serverConfigElement.getChild(EmailConfigurationsManager.ENABLED); boolean enabled = enabledElement == null || !"false".equals(enabledElement.getText()); Map<String, String> propertiesMap = new HashMap<>(); Element properties = serverConfigElement.getChild(EmailConfigurationsManager.PROPERTIES); for (Element property : properties.getChildren()) { String key = property.getAttributeValue(EmailConfigurationsManager.KEY); String value = property.getAttributeValue(EmailConfigurationsManager.VALUE); propertiesMap.put(key, value); } EmailServerConfiguration config; try { config = new EmailServerConfigurationFactory() .getServerConfiguration(username, defaultSenderEmail, password, propertiesMap, enabled); } catch (Throwable e) { config = new BaseEmailServerConfiguration(username, password, defaultSenderEmail, propertiesMap, false); LOGGER.error("Email server disabled because of :", e); } return config; } }