package foundation.send.mail;
|
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.FileNotFoundException;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.security.Security;
|
import java.util.Iterator;
|
|
import org.dom4j.Document;
|
import org.dom4j.Element;
|
import org.dom4j.io.SAXReader;
|
|
import foundation.data.entity.Entity;
|
import foundation.data.entity.EntitySet;
|
import foundation.data.object.DataObject;
|
import foundation.server.Initializer;
|
import foundation.server.config.Configer;
|
|
|
public class MailLoader extends Initializer {
|
|
private static MailLoader instance;
|
private MailServerBucket serverBucket;
|
private MailActionBucket actionBucket;
|
|
|
private MailLoader() throws FileNotFoundException {
|
actionBucket = MailActionBucket.getInstance();
|
serverBucket = MailServerBucket.getInstance();
|
}
|
|
public static synchronized MailLoader getInstance() throws FileNotFoundException {
|
if (instance == null) {
|
if (instance == null) {
|
instance = new MailLoader();
|
}
|
}
|
|
return instance;
|
}
|
|
@Override
|
public void startUp() throws Exception {
|
//1.
|
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
|
|
//2. load mail servers
|
loadMailServers();
|
|
//3. load mail actions
|
loadMailActions();
|
}
|
|
private void loadMailServers() throws Exception {
|
//1. load configuration
|
String path = Configer.getPath_Config();
|
File file = new File(path, "mail.xml");
|
logger.debug("load config file:" + file);
|
|
//2.
|
InputStream inputStream = new FileInputStream(file);
|
try {
|
SAXReader reader = new SAXReader();
|
reader.setValidation(false);
|
|
Document doc = reader.read(inputStream);
|
Element root = doc.getRootElement();
|
|
loadServers(root);
|
}
|
finally {
|
try {
|
inputStream.close();
|
} catch (IOException e) {
|
}
|
}
|
}
|
|
private void loadServers(Element root) {
|
Element databaseList = root.element("server-list");
|
Iterator<Element> iterator = databaseList.elementIterator("server");
|
|
while (iterator.hasNext()) {
|
Element element = iterator.next();
|
|
MailServer server = new MailServer();
|
server.load(element);
|
|
serverBucket.loadOne(server.getName(), server);
|
}
|
}
|
|
private void loadMailActions() throws Exception {
|
//1. load
|
DataObject dataObject = DataObject.getInstance("sys_mail");
|
EntitySet entitySet = dataObject.getTableEntitySet();
|
|
for (Entity entity: entitySet) {
|
MailAction action = new MailAction();
|
action.load(entity);
|
actionBucket.loadOne(action.getName(), action);
|
}
|
|
//2.
|
for (MailAction action: actionBucket) {
|
String serverName = action.getServerName();
|
MailServer server = serverBucket.get(serverName);
|
|
if (server == null) {
|
logger.error("load mail action error, server not exists: {}", serverName);
|
continue;
|
}
|
|
action.setServer(server);
|
}
|
}
|
|
@Override
|
public void shutDown() throws Exception {
|
|
}
|
|
}
|