📄 factory.java
字号:
/**************************************************************** * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * * * Copyright 2008 Jun Li(SiChuan University, the School of * * Software Engineering). All rights reserved. * * * * Licensed to the JMS under one or more contributor license * * agreements. See the LICENCE file distributed with this * * work for additional information regarding copyright * * ownership. The JMS licenses this file you may not use this * * file except in compliance with the License. * * * * Unless required by applicable law or agreed to in writing, * * software distributed under the License is distributed on an * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * * KIND, either express or implied. See the License for the * * specific language governing permissions and limitations * * under the License. * ****************************************************************/package org.jpxx.mail;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Writer;import org.apache.log4j.Logger;import org.apache.log4j.xml.DOMConfigurator;import org.jpxx.mail.Config.Configuration;import org.jpxx.mail.Config.XmlConfig;import org.jpxx.mail.Exception.InvalidServiceException;import org.jpxx.mail.Pop3.Pop3Server;import org.jpxx.mail.Service.AbstractServer;import org.jpxx.mail.Service.Server;import org.jpxx.mail.Smtp.SmtpServer;import org.jpxx.mail.plugin.console.ConsoleServer;/** * This is a Calss factory to create instance of some classes. * * @author Jun Li * @version $Revision: 0.0.3 $, $Date: 2008/05/20 $ * @since JMS 0.0.1 */public class Factory { private static Factory singletonInstance = null; /** * Gets a singleton instance of Factory. * @since JMS 0.0.1 * @return a singleton instance of Factory */ public static Factory getSingletonInstance() { if (singletonInstance == null) { // Creates a instance. singletonInstance = new Factory(); } return singletonInstance; } private Factory() { init(); } /** * Creates an instance of <tt>Server<tt>. * * <p>This function needs to make better.</p> * * @deprecated NEED IMPROVE * * @since JMS 0.0.1 * @param serviceName Such as "SMTP", "POP3" * @return the object of Server. if this is no service found, return null. * @throws org.jpxx.mail.Exception.InvalidServiceException */ public Server getServer(String serviceName) throws InvalidServiceException { if (serviceName == null) { throw new InvalidServiceException("Service Name is NULL"); } AbstractServer server = null; if (serviceName.toUpperCase().equals("SMTP")) { server = SmtpServer.getSingletonInstance(); } else if (serviceName.toUpperCase().equals("POP") || serviceName.toUpperCase().equals("POP3")) { server = Pop3Server.getSingletonInstance(); } else if (serviceName.toUpperCase().equals("CONSOLE") || serviceName.toUpperCase().equals("CONSOLE")) { server = ConsoleServer.getSingletonInstance(); } if (server != null) { return server; } else { throw new InvalidServiceException("Service Name Not found"); } } /** * Creates an instance of <tt>Configuration<tt>. * @since JMS 0.0.1 * @return an instance of XmlConfig. */ public Configuration getConfiguration() { return new XmlConfig(Constants.CONFIG_FILE_PATH); } /** * Creates an instance of <tt>org.apache.log4j.Logger<tt>. * @param className The class you will write log. * @since JMS 0.0.1 * @return Logger instance. */ public Logger getLogger(String className) { return Logger.getLogger(className); } /** * Creates an instance of <tt>org.apache.log4j.Logger<tt>. * @since JMS 0.0.1 * @param o The class you will write log. * @return Logger instance. */ public Logger getLogger(Object o) { return getLogger(o.getClass().getName()); } // <editor-fold defaultstate="collapsed" desc="Initialization"> /** * Initials JMS config. Does someting before JMS started. * * @since JMS 0.0.1 */ private void init() { File f = new File(Constants.LOG4J_FILE_PATH); if (!f.exists()) { try { String p = f.getAbsolutePath(); String dir = p.substring(0, p.lastIndexOf(File.separator)); new File(dir).mkdirs(); f.createNewFile(); StringBuilder s = new StringBuilder(); s.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n"); s.append("<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\r\n"); s.append("<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\r\n"); s.append("\r\n"); s.append(" <appender name=\"rollingFileAppender\" class=\"org.apache.log4j.RollingFileAppender\">\r\n"); s.append(" <param name=\"Threshold\" value=\"ALL\"/>\r\n"); s.append(" <param name=\"File\" value=\"" + Constants.LOG_FILE_PATH + "\" />\r\n"); s.append(" <param name=\"Append\" value=\"true\" />\r\n"); s.append(" <param name=\"MaxFileSize\" value=\"1024KB\" />\r\n"); s.append(" <layout class=\"org.apache.log4j.PatternLayout\">\r\n"); s.append(" <!--<param name=\"ConversionPattern\" value=\"%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n\" />-->\r\n"); s.append(" <param name=\"ConversionPattern\" value=\"[%d{yyyy-MM-dd HH:mm:ss}] %m%n\" />\r\n"); s.append(" </layout>\r\n"); s.append(" </appender>\r\n"); s.append("\r\n"); s.append(" <appender name=\"dailyRollingFileAppender\" class=\"org.apache.log4j.DailyRollingFileAppender\">\r\n"); s.append(" <param name=\"Threshold\" value=\"ALL\"/>\r\n"); s.append(" <param name=\"File\" value=\"" + Constants.LOG_FILE_PATH + "\" />\r\n"); s.append(" <param name=\"Append\" value=\"false\" />\r\n"); s.append(" <param name=\"DatePattern\" value=\"'.'yyyy-MM-dd'.log'\" />\r\n"); s.append(" <layout class=\"org.apache.log4j.PatternLayout\">\r\n"); s.append(" <param name=\"ConversionPattern\" value=\"%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n\" />\r\n"); s.append(" </layout>\r\n"); s.append(" </appender>\r\n"); s.append("\r\n"); s.append(" <appender name=\"STDOUT\" class=\"org.apache.log4j.ConsoleAppender\">\r\n"); s.append(" <param name=\"Target\" value=\"System.out\" />\r\n"); s.append(" <layout class=\"org.apache.log4j.PatternLayout\">\r\n"); s.append(" <param name=\"ConversionPattern\" value=\"%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n\" />\r\n"); s.append(" </layout>\r\n"); s.append(" <filter class=\"org.apache.log4j.varia.LevelRangeFilter\">\r\n"); s.append(" <param name=\"LevelMin\" value=\"DEBUG\"/>\r\n"); s.append(" <param name=\"LevelMax\" value=\"INFO\"/>\r\n"); s.append(" </filter>\r\n"); s.append(" </appender>\r\n"); s.append("\r\n"); s.append("\r\n"); s.append(" <appender name=\"STDERR\" class=\"org.apache.log4j.ConsoleAppender\">\r\n"); s.append(" <param name=\"Target\" value=\"System.err\" />\r\n"); s.append(" <layout class=\"org.apache.log4j.PatternLayout\">\r\n"); s.append(" <param name=\"ConversionPattern\" value=\"%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n\" />\r\n"); s.append(" </layout>\r\n"); s.append(" <filter class=\"org.apache.log4j.varia.LevelRangeFilter\">\r\n"); s.append(" <param name=\"LevelMin\" value=\"WARN\"/>\r\n"); s.append(" <param name=\"LevelMax\" value=\"FATAL\"/>\r\n"); s.append(" </filter>\r\n"); s.append(" </appender>\r\n"); s.append("\r\n"); s.append("\r\n"); s.append(" <logger name=\"org.jpxx.mail\" additivity=\"true\">\r\n"); s.append(" <appender-ref ref=\"rollingFileAppender\" />\r\n"); s.append(" </logger>\r\n"); s.append(" <root>\r\n"); s.append(" <level value=\"all\" />\r\n"); s.append(" <appender-ref ref=\"STDOUT\" />\r\n"); s.append(" <appender-ref ref=\"STDERR\" />\r\n"); s.append(" </root>\r\n"); s.append("</log4j:configuration>\r\n"); FileOutputStream fos = new FileOutputStream(f); Writer out = new OutputStreamWriter(fos, "UTF-8"); out.write(s.toString()); out.close(); } catch (IOException ex) { } } DOMConfigurator.configure(Constants.LOG4J_FILE_PATH); /** * Check temp dir exist or not. */ f = new File(Constants.TEMP_DIR); if (!f.exists()) { f.mkdirs(); } } // </editor-fold>}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -