隨筆 - 6  文章 - 129  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827222
          • 排名 - 49

          最新評論

          閱讀排行榜

          評論排行榜

          package com.apress.dwrprojects.instamail;


          import java.io.File;
          import java.io.FileOutputStream;
          import java.io.InputStream;
          import java.io.IOException;
          import java.util.Properties;
          import javax.servlet.ServletContext;
          import org.apache.commons.logging.Log;
          import org.apache.commons.logging.LogFactory;


          /**
           * This class deals with maintaining options, including the e-mail account.
           *
           * @author <a href="mailto:fzammetti@omnytex.com">Frank W. Zammetti</a>.
           */
          public class OptionsManager {


            /**
             * Log instance.
             */
            private static Log log = LogFactory.getLog(OptionsManager.class);


            /**
             * File name of the options file.
             */
            private static final String optionsFilename = "options.properties";


            /**
             * This method retrieves the options and returns them.  If no
             * optionsFilename file is found, a 'blank' DTO is returned.
             *
             * @param  sc ServletContext associates with the request.
             * @return    An OptionsDTO containing all the stored options.
             */
            public OptionsDTO retrieveOptions(ServletContext sc) {

              // Instantiate an OptionsDTO, and by default assume it will be configured.
              // This means the application has already been configured for use.  This
              // affects what the user can do when the app is accessed initially.
              OptionsDTO options = new OptionsDTO();
              options.setConfigured(true);

              // Read in the options.
              InputStream isFeedFile =
                sc.getResourceAsStream("/WEB-INF/" + optionsFilename);

              Properties props = new Properties();
              try {
                if (isFeedFile == null) {
                  throw new IOException(optionsFilename + " not found");
                }
                props.load(isFeedFile);
                isFeedFile.close();
              } catch (IOException e) {
                log.info("No " + optionsFilename + " file, a blank DTO will " +
                  "be returned.");
                // Make sure the OptionsDTO is set as unconfigured so that when the
                // index.jsp page is loaded, all the user will be allowed to do is go to
                // the Options views.
                options.setConfigured(false);
                props.setProperty("pop3Server", "");
                props.setProperty("pop3ServerRequiresLogin", "false");
                props.setProperty("pop3Username", "");
                props.setProperty("pop3Password", "");
                props.setProperty("smtpServer", "");
                props.setProperty("smtpServerRequiresLogin", "false");
                props.setProperty("smtpUsername", "");
                props.setProperty("smtpPassword", "");
                props.setProperty("fromAddress", "");
              }

              // Populate OptionsDTO from options Properties.
              options.setPop3Server(props.getProperty("pop3Server"));
              options.setPop3ServerRequiresLogin(
                props.getProperty("pop3ServerRequiresLogin"));
              options.setPop3Username(props.getProperty("pop3Username"));
              options.setPop3Password(props.getProperty("pop3Password"));
              options.setSmtpServer(props.getProperty("smtpServer"));
              options.setSmtpServerRequiresLogin(
                props.getProperty("smtpServerRequiresLogin"));
              options.setSmtpUsername(props.getProperty("smtpUsername"));
              options.setSmtpPassword(props.getProperty("smtpPassword"));
              options.setFromAddress(props.getProperty("fromAddress"));

              return options;

            } // End retrieveOptions().


            /**
             * This method saves the options.
             *
             * @param  pop3Server              The POP3 server address.
             * @param  pop3ServerRequiresLogin Does the POP3 server require login?
             * @param  pop3Username            The POP3 username.
             * @param  pop3Password            The POP3 password.
             * @param  smtpServer              The SMTP server address.
             * @param  smtpServerRequiresLogin Does the SMTP server require login?
             * @param  smtpUsername            The SMTP username.
             * @param  smtpPassword            The SMTP password.
             * @param  fromAddress             From address for outgoing messages.
             * @param  sc                      ServletContext associated with the request.
             * @return                         A message saying the save was OK.
             */
            public String saveOptions(String pop3Server, String pop3ServerRequiresLogin,
              String pop3Username, String pop3Password, String smtpServer,
              String smtpServerRequiresLogin, String smtpUsername,
              String smtpPassword, String fromAddress, ServletContext sc) {

                // Log what we received.
                log.info("\nSaving options:\n" +
                "pop3Server = " + pop3Server + "\n" +
                  "pop3ServerRequiresLogin = " + pop3ServerRequiresLogin + "\n" +
                  "pop3Username = " + pop3Username + "\n" +
                  "pop3Password = " + pop3Password + "\n" +
                  "smtpServer = " + smtpServer + "\n" +
                  "smtpServerRequiresLogin = " + smtpServerRequiresLogin + "\n" +
                  "smtpUsername = " + smtpUsername + "\n" +
                  "smtpPassword = " + smtpPassword + "\n" +
                  "fromAddress = " + fromAddress + "\n");

                String result = "";

                // Populate Properties structure.
                Properties props = new Properties();
                props.setProperty("pop3Server", pop3Server);
                props.setProperty("pop3ServerRequiresLogin",
                  pop3ServerRequiresLogin);
                props.setProperty("pop3Username", pop3Username);
                props.setProperty("pop3Password", pop3Password);
                props.setProperty("smtpServer", smtpServer);
                props.setProperty("smtpServerRequiresLogin",
                  smtpServerRequiresLogin);
                props.setProperty("smtpUsername", smtpUsername);
                props.setProperty("smtpPassword", smtpPassword);
                props.setProperty("fromAddress",  fromAddress);

                // Lastly, delete any existing optionsFilename file in WEB-INF and
                // write out a new version from the Properties object we just populated.
                // Return a message saying the operation was complete, or if any problems
                // occur, a message saying what went wrong.
                FileOutputStream fos = null;
                try {
                  new File(sc.getRealPath("WEB-INF") + "/" + optionsFilename).delete();
                  fos = new FileOutputStream(sc.getRealPath("WEB-INF") +
                    "/" + optionsFilename);
                  props.store(fos, null);
                  fos.flush();
                  result = "Options have been saved.";

                } catch (IOException e) {
                  log.error("Error saving contact:");
                  e.printStackTrace();
                  result = "Options could not be saved.  " +
                    "Please review logs for details.";
                } finally {
                  try {
                    if (fos != null) {
                      fos.close();
                    }
                  } catch (IOException e) {
                    log.error("Error closing fos: " + e);
                  }
                }

                return result;

            } // End saveOptions().


          } // End class.



          posted on 2010-03-09 22:19 Ke 閱讀(505) 評論(0)  編輯  收藏 所屬分類: javaIO
          主站蜘蛛池模板: 卢龙县| 伊金霍洛旗| 襄樊市| 鹿泉市| 马关县| 龙井市| 云南省| 鄂温| 屏东县| 齐河县| 天峻县| 正安县| 昭觉县| 福贡县| 白沙| 靖远县| 岑溪市| 高安市| 呼和浩特市| 上杭县| 稷山县| 堆龙德庆县| 兰坪| 宜君县| 黑山县| 军事| 浠水县| 承德县| 大足县| 壶关县| 恩施市| 涞源县| 保靖县| 措美县| 马边| 宝鸡市| 龙陵县| 庆城县| 石泉县| 临沧市| 大理市|