From 96a90f260d5e0ca1d6c5effd4684c8ef1018b9e8 Mon Sep 17 00:00:00 2001 From: chengyu Date: Tue, 20 Jun 2017 23:35:57 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/coderising/ood/ocp/DateUtil.java | 10 +++ .../java/com/coderising/ood/ocp/Logger.java | 38 ++++++++++ .../java/com/coderising/ood/ocp/MailUtil.java | 10 +++ .../java/com/coderising/ood/ocp/SMSUtil.java | 10 +++ .../coderising/ood/ocp/good/Formatter.java | 7 ++ .../ood/ocp/good/FormatterFactory.java | 13 ++++ .../ood/ocp/good/HtmlFormatter.java | 11 +++ .../com/coderising/ood/ocp/good/Logger.java | 18 +++++ .../coderising/ood/ocp/good/RawFormatter.java | 11 +++ .../com/coderising/ood/ocp/good/Sender.java | 7 ++ .../com/coderising/ood/srp/Configuration.java | 23 ++++++ .../coderising/ood/srp/ConfigurationKeys.java | 9 +++ .../java/com/coderising/ood/srp/DBUtil.java | 25 +++++++ .../java/com/coderising/ood/srp/Mail.java | 44 ++++++++++++ .../java/com/coderising/ood/srp/Product.java | 49 +++++++++++++ .../com/coderising/ood/srp/PromotionMail.java | 72 +++++++++++++++++++ .../coderising/ood/srp/product_promotion.txt | 4 ++ 17 files changed, 361 insertions(+) create mode 100644 students/583884851/src/main/java/com/coderising/ood/ocp/DateUtil.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/ocp/Logger.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/ocp/MailUtil.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/ocp/SMSUtil.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/ocp/good/Formatter.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/ocp/good/FormatterFactory.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/ocp/good/HtmlFormatter.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/ocp/good/Logger.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/ocp/good/RawFormatter.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/ocp/good/Sender.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/srp/Configuration.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/srp/DBUtil.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/srp/Mail.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/srp/Product.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/srp/PromotionMail.java create mode 100644 students/583884851/src/main/java/com/coderising/ood/srp/product_promotion.txt diff --git a/students/583884851/src/main/java/com/coderising/ood/ocp/DateUtil.java b/students/583884851/src/main/java/com/coderising/ood/ocp/DateUtil.java new file mode 100644 index 0000000000..0d0d01098f --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/ocp/DateUtil.java @@ -0,0 +1,10 @@ +package com.coderising.ood.ocp; + +public class DateUtil { + + public static String getCurrentDateAsString() { + + return null; + } + +} diff --git a/students/583884851/src/main/java/com/coderising/ood/ocp/Logger.java b/students/583884851/src/main/java/com/coderising/ood/ocp/Logger.java new file mode 100644 index 0000000000..aca173e665 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/ocp/Logger.java @@ -0,0 +1,38 @@ +package com.coderising.ood.ocp; + +public class Logger { + + public final int RAW_LOG = 1; + public final int RAW_LOG_WITH_DATE = 2; + public final int EMAIL_LOG = 1; + public final int SMS_LOG = 2; + public final int PRINT_LOG = 3; + + int type = 0; + int method = 0; + + public Logger(int logType, int logMethod){ + this.type = logType; + this.method = logMethod; + } + public void log(String msg){ + + String logMsg = msg; + + if(this.type == RAW_LOG){ + logMsg = msg; + } else if(this.type == RAW_LOG_WITH_DATE){ + String txtDate = DateUtil.getCurrentDateAsString(); + logMsg = txtDate + ": " + msg; + } + + if(this.method == EMAIL_LOG){ + MailUtil.send(logMsg); + } else if(this.method == SMS_LOG){ + SMSUtil.send(logMsg); + } else if(this.method == PRINT_LOG){ + System.out.println(logMsg); + } + } +} + diff --git a/students/583884851/src/main/java/com/coderising/ood/ocp/MailUtil.java b/students/583884851/src/main/java/com/coderising/ood/ocp/MailUtil.java new file mode 100644 index 0000000000..59d77649a2 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/ocp/MailUtil.java @@ -0,0 +1,10 @@ +package com.coderising.ood.ocp; + +public class MailUtil { + + public static void send(String logMsg) { + // TODO Auto-generated method stub + + } + +} diff --git a/students/583884851/src/main/java/com/coderising/ood/ocp/SMSUtil.java b/students/583884851/src/main/java/com/coderising/ood/ocp/SMSUtil.java new file mode 100644 index 0000000000..fab4cd01b7 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/ocp/SMSUtil.java @@ -0,0 +1,10 @@ +package com.coderising.ood.ocp; + +public class SMSUtil { + + public static void send(String logMsg) { + // TODO Auto-generated method stub + + } + +} diff --git a/students/583884851/src/main/java/com/coderising/ood/ocp/good/Formatter.java b/students/583884851/src/main/java/com/coderising/ood/ocp/good/Formatter.java new file mode 100644 index 0000000000..b6e2ccbc16 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/ocp/good/Formatter.java @@ -0,0 +1,7 @@ +package com.coderising.ood.ocp.good; + +public interface Formatter { + + String format(String msg); + +} diff --git a/students/583884851/src/main/java/com/coderising/ood/ocp/good/FormatterFactory.java b/students/583884851/src/main/java/com/coderising/ood/ocp/good/FormatterFactory.java new file mode 100644 index 0000000000..3c2009a674 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/ocp/good/FormatterFactory.java @@ -0,0 +1,13 @@ +package com.coderising.ood.ocp.good; + +public class FormatterFactory { + public static Formatter createFormatter(int type){ + if(type == 1){ + return new RawFormatter(); + } + if (type == 2){ + return new HtmlFormatter(); + } + return null; + } +} diff --git a/students/583884851/src/main/java/com/coderising/ood/ocp/good/HtmlFormatter.java b/students/583884851/src/main/java/com/coderising/ood/ocp/good/HtmlFormatter.java new file mode 100644 index 0000000000..3d375f5acc --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/ocp/good/HtmlFormatter.java @@ -0,0 +1,11 @@ +package com.coderising.ood.ocp.good; + +public class HtmlFormatter implements Formatter { + + @Override + public String format(String msg) { + + return null; + } + +} diff --git a/students/583884851/src/main/java/com/coderising/ood/ocp/good/Logger.java b/students/583884851/src/main/java/com/coderising/ood/ocp/good/Logger.java new file mode 100644 index 0000000000..f206472d0d --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/ocp/good/Logger.java @@ -0,0 +1,18 @@ +package com.coderising.ood.ocp.good; + +public class Logger { + + private Formatter formatter; + private Sender sender; + + public Logger(Formatter formatter,Sender sender){ + this.formatter = formatter; + this.sender = sender; + } + public void log(String msg){ + sender.send(formatter.format(msg)) ; + } + + +} + diff --git a/students/583884851/src/main/java/com/coderising/ood/ocp/good/RawFormatter.java b/students/583884851/src/main/java/com/coderising/ood/ocp/good/RawFormatter.java new file mode 100644 index 0000000000..7f1cb4ae30 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/ocp/good/RawFormatter.java @@ -0,0 +1,11 @@ +package com.coderising.ood.ocp.good; + +public class RawFormatter implements Formatter { + + @Override + public String format(String msg) { + + return null; + } + +} diff --git a/students/583884851/src/main/java/com/coderising/ood/ocp/good/Sender.java b/students/583884851/src/main/java/com/coderising/ood/ocp/good/Sender.java new file mode 100644 index 0000000000..aaa46c1fb7 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/ocp/good/Sender.java @@ -0,0 +1,7 @@ +package com.coderising.ood.ocp.good; + +public interface Sender { + + void send(String msg); + +} diff --git a/students/583884851/src/main/java/com/coderising/ood/srp/Configuration.java b/students/583884851/src/main/java/com/coderising/ood/srp/Configuration.java new file mode 100644 index 0000000000..f328c1816a --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/srp/Configuration.java @@ -0,0 +1,23 @@ +package com.coderising.ood.srp; +import java.util.HashMap; +import java.util.Map; + +public class Configuration { + + static Map configurations = new HashMap<>(); + static{ + configurations.put(ConfigurationKeys.SMTP_SERVER, "smtp.163.com"); + configurations.put(ConfigurationKeys.ALT_SMTP_SERVER, "smtp1.163.com"); + configurations.put(ConfigurationKeys.EMAIL_ADMIN, "admin@company.com"); + } + /** + * 应该从配置文件读, 但是这里简化为直接从一个map 中去读 + * @param key + * @return + */ + public String getProperty(String key) { + + return configurations.get(key); + } + +} diff --git a/students/583884851/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/583884851/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java new file mode 100644 index 0000000000..8695aed644 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java @@ -0,0 +1,9 @@ +package com.coderising.ood.srp; + +public class ConfigurationKeys { + + public static final String SMTP_SERVER = "smtp.server"; + public static final String ALT_SMTP_SERVER = "alt.smtp.server"; + public static final String EMAIL_ADMIN = "email.admin"; + +} diff --git a/students/583884851/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/583884851/src/main/java/com/coderising/ood/srp/DBUtil.java new file mode 100644 index 0000000000..82e9261d18 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/srp/DBUtil.java @@ -0,0 +1,25 @@ +package com.coderising.ood.srp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class DBUtil { + + /** + * 应该从数据库读, 但是简化为直接生成。 + * @param sql + * @return + */ + public static List query(String sql){ + + List userList = new ArrayList(); + for (int i = 1; i <= 3; i++) { + HashMap userInfo = new HashMap(); + userInfo.put("NAME", "User" + i); + userInfo.put("EMAIL", "aa@bb.com"); + userList.add(userInfo); + } + + return userList; + } +} diff --git a/students/583884851/src/main/java/com/coderising/ood/srp/Mail.java b/students/583884851/src/main/java/com/coderising/ood/srp/Mail.java new file mode 100644 index 0000000000..f195417dac --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/srp/Mail.java @@ -0,0 +1,44 @@ +package com.coderising.ood.srp; + +/** + * 邮件类 + * + * @author chengyu + * @version 17/6/20 + */ +public class Mail { + protected String smtpHost = null; + protected String altSmtpHost = null; + protected String fromAddress = null; + protected String toAddress = null; + protected String subject = null; + protected String message = null; + + public Mail() { + + } + + public Mail(Configuration config) { + smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER); + altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER); + fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN); + } + + public void send() { + StringBuilder buffer = new StringBuilder(); + buffer.append("From:").append(fromAddress).append("\n"); + buffer.append("To:").append(toAddress).append("\n"); + buffer.append("Subject:").append(subject).append("\n"); + buffer.append("Content:").append(message).append("\n"); + System.out.println(buffer.toString()); + } + + public void setToAddress(String toAddress) { + this.toAddress = toAddress; + } + + public void setContent(String subject, String message) { + this.subject = subject; + this.message = message; + } +} diff --git a/students/583884851/src/main/java/com/coderising/ood/srp/Product.java b/students/583884851/src/main/java/com/coderising/ood/srp/Product.java new file mode 100644 index 0000000000..da05192e51 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/srp/Product.java @@ -0,0 +1,49 @@ +package com.coderising.ood.srp; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +/** + * @author chengyu + * @version 17/6/20 + */ +public class Product { + protected String productID = null; + protected String productDesc = null; + + public Product() { + } + + public Product(String productID, String productDesc) { + this.productID = productID; + this.productDesc = productDesc; + } + + public static Product of(File file) throws IOException { + BufferedReader br; + br = new BufferedReader(new FileReader(file)); + String temp = br.readLine(); + String[] data = temp.split(" "); + System.out.println("产品ID = " + data[0] + "\n"); + System.out.println("产品描述 = " + data[1] + "\n"); + return new Product(data[0], data[1]); + } + + public String getProductID() { + return productID; + } + + public void setProductID(String productID) { + this.productID = productID; + } + + public String getProductDesc() { + return productDesc; + } + + public void setProductDesc(String productDesc) { + this.productDesc = productDesc; + } +} diff --git a/students/583884851/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/583884851/src/main/java/com/coderising/ood/srp/PromotionMail.java new file mode 100644 index 0000000000..307cfd3dd9 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/srp/PromotionMail.java @@ -0,0 +1,72 @@ +package com.coderising.ood.srp; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +public class PromotionMail { + + private Product product; + + private static final String NAME_KEY = "NAME"; + private static final String EMAIL_KEY = "EMAIL"; + + public PromotionMail() { + File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt"); + try { + product = Product.of(f); + } catch (IOException e) { + throw new RuntimeException(e.getMessage()); + } + } + + public static void main(String[] args) throws Exception { + PromotionMail pe = new PromotionMail(); + List emailList = pe.loadMailingList(); + pe.sendEMails(emailList); + } + + + protected List loadMailingList() throws Exception { + String sendMailQuery = "Select name from subscriptions " + + "where product_id= '" + product.getProductID() + "' " + + "and send_mail=1 "; + return DBUtil.query(sendMailQuery); + } + + + protected void sendEMails(List mailingList) throws IOException { + + System.out.println("开始发送邮件"); + Mail mail = new Mail(new Configuration()); + + if (mailingList != null) { + Iterator iter = mailingList.iterator(); + while (iter.hasNext()) { + HashMap userInfo = (HashMap) iter.next(); + mail.setToAddress((String) userInfo.get(EMAIL_KEY)); + setContent(mail, userInfo, product); + try { + mail.send(); + } catch (Exception e) { + try { + mail.send(); + } catch (Exception e2) { + System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage()); + } + } + } + } else { + System.out.println("没有邮件发送"); + } + } + + private void setContent(Mail mail, HashMap userInfo, Product product) { + String subject = "您关注的产品降价了"; + String name = (String) userInfo.get(NAME_KEY); + String message = "尊敬的 " + name + ", 您关注的产品 " + product.getProductDesc() + " 降价了,欢迎购买!"; + mail.setContent(subject, message); + } +} diff --git a/students/583884851/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/583884851/src/main/java/com/coderising/ood/srp/product_promotion.txt new file mode 100644 index 0000000000..0c0124cc61 --- /dev/null +++ b/students/583884851/src/main/java/com/coderising/ood/srp/product_promotion.txt @@ -0,0 +1,4 @@ +P8756 iPhone8 +P3946 XiaoMi10 +P8904 Oppo_R15 +P4955 Vivo_X20 \ No newline at end of file From 288861eaa6c90326492e27c539aed5c41a0afcfd Mon Sep 17 00:00:00 2001 From: Star <294022181@qq.com> Date: Wed, 21 Jun 2017 00:41:14 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/coderising/ocp/EmailLogPrinter.java | 10 ++++++++ .../src/com/coderising/ocp/LogPrinter.java | 5 ++++ .../src/com/coderising/ocp/LogProcessor.java | 5 ++++ .../coderising/ocp/LogWithDateProcessor.java | 12 ++++++++++ .../src/com/coderising/ocp/Logger.java | 23 +++++++++++++++++++ .../com/coderising/ocp/NormalLogPrinter.java | 10 ++++++++ .../com/coderising/ocp/RawLogProcessor.java | 10 ++++++++ .../src/com/coderising/ocp/SmsLogPrinter.java | 10 ++++++++ 8 files changed, 85 insertions(+) create mode 100644 students/294022181/ocp-assignment/src/com/coderising/ocp/EmailLogPrinter.java create mode 100644 students/294022181/ocp-assignment/src/com/coderising/ocp/LogPrinter.java create mode 100644 students/294022181/ocp-assignment/src/com/coderising/ocp/LogProcessor.java create mode 100644 students/294022181/ocp-assignment/src/com/coderising/ocp/LogWithDateProcessor.java create mode 100644 students/294022181/ocp-assignment/src/com/coderising/ocp/Logger.java create mode 100644 students/294022181/ocp-assignment/src/com/coderising/ocp/NormalLogPrinter.java create mode 100644 students/294022181/ocp-assignment/src/com/coderising/ocp/RawLogProcessor.java create mode 100644 students/294022181/ocp-assignment/src/com/coderising/ocp/SmsLogPrinter.java diff --git a/students/294022181/ocp-assignment/src/com/coderising/ocp/EmailLogPrinter.java b/students/294022181/ocp-assignment/src/com/coderising/ocp/EmailLogPrinter.java new file mode 100644 index 0000000000..d0d5fbe7e2 --- /dev/null +++ b/students/294022181/ocp-assignment/src/com/coderising/ocp/EmailLogPrinter.java @@ -0,0 +1,10 @@ +package com.coderising.ocp; + +public class EmailLogPrinter implements LogPrinter { + + @Override + public void print(String log) { + //MailUtil.send(log); + } + +} diff --git a/students/294022181/ocp-assignment/src/com/coderising/ocp/LogPrinter.java b/students/294022181/ocp-assignment/src/com/coderising/ocp/LogPrinter.java new file mode 100644 index 0000000000..f7f50226fb --- /dev/null +++ b/students/294022181/ocp-assignment/src/com/coderising/ocp/LogPrinter.java @@ -0,0 +1,5 @@ +package com.coderising.ocp; + +public interface LogPrinter { + void print(String log); +} diff --git a/students/294022181/ocp-assignment/src/com/coderising/ocp/LogProcessor.java b/students/294022181/ocp-assignment/src/com/coderising/ocp/LogProcessor.java new file mode 100644 index 0000000000..e5343c7d25 --- /dev/null +++ b/students/294022181/ocp-assignment/src/com/coderising/ocp/LogProcessor.java @@ -0,0 +1,5 @@ +package com.coderising.ocp; + +public interface LogProcessor { + String process(String msg); +} diff --git a/students/294022181/ocp-assignment/src/com/coderising/ocp/LogWithDateProcessor.java b/students/294022181/ocp-assignment/src/com/coderising/ocp/LogWithDateProcessor.java new file mode 100644 index 0000000000..f4c574e9fc --- /dev/null +++ b/students/294022181/ocp-assignment/src/com/coderising/ocp/LogWithDateProcessor.java @@ -0,0 +1,12 @@ +package com.coderising.ocp; + +import java.util.Date; + +public class LogWithDateProcessor implements LogProcessor { + + @Override + public String process(String msg) { + String txtDate = new Date().toString(); + return txtDate + ": " + msg; + } +} diff --git a/students/294022181/ocp-assignment/src/com/coderising/ocp/Logger.java b/students/294022181/ocp-assignment/src/com/coderising/ocp/Logger.java new file mode 100644 index 0000000000..071bb88a63 --- /dev/null +++ b/students/294022181/ocp-assignment/src/com/coderising/ocp/Logger.java @@ -0,0 +1,23 @@ +package com.coderising.ocp; + +public class Logger { + private LogProcessor processor; + private LogPrinter printer; + + public Logger(LogProcessor processor, LogPrinter printer) { + this.processor = processor; + this.printer = printer; + } + + public void log(String msg) { + String logMsg = msg; + + if (processor != null) { + logMsg = processor.process(logMsg); + } + + if (printer != null) { + printer.print(logMsg); + } + } +} diff --git a/students/294022181/ocp-assignment/src/com/coderising/ocp/NormalLogPrinter.java b/students/294022181/ocp-assignment/src/com/coderising/ocp/NormalLogPrinter.java new file mode 100644 index 0000000000..dce3556358 --- /dev/null +++ b/students/294022181/ocp-assignment/src/com/coderising/ocp/NormalLogPrinter.java @@ -0,0 +1,10 @@ +package com.coderising.ocp; + +public class NormalLogPrinter implements LogPrinter { + + @Override + public void print(String log) { + System.out.println(log); + } + +} diff --git a/students/294022181/ocp-assignment/src/com/coderising/ocp/RawLogProcessor.java b/students/294022181/ocp-assignment/src/com/coderising/ocp/RawLogProcessor.java new file mode 100644 index 0000000000..4aa5badd37 --- /dev/null +++ b/students/294022181/ocp-assignment/src/com/coderising/ocp/RawLogProcessor.java @@ -0,0 +1,10 @@ +package com.coderising.ocp; + +public class RawLogProcessor implements LogProcessor { + + @Override + public String process(String msg) { + return msg; + } + +} diff --git a/students/294022181/ocp-assignment/src/com/coderising/ocp/SmsLogPrinter.java b/students/294022181/ocp-assignment/src/com/coderising/ocp/SmsLogPrinter.java new file mode 100644 index 0000000000..88a0913761 --- /dev/null +++ b/students/294022181/ocp-assignment/src/com/coderising/ocp/SmsLogPrinter.java @@ -0,0 +1,10 @@ +package com.coderising.ocp; + +public class SmsLogPrinter implements LogPrinter { + + @Override + public void print(String log) { + //SMSUtil.send(log); + } + +} From 4bab040b57ab2cdd02932139fea9f12e2c26799d Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 21 Jun 2017 10:12:57 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- students/402246209/learning/pom.xml | 47 +++++++++++++++++++ .../odd/ocp/config/LoggerConstant.java | 26 ++++++++++ .../odd/ocp/logger/Impl/LoggerImpl.java | 36 ++++++++++++++ .../odd/ocp/logger/LoggerInterface.java | 8 ++++ .../com/mimieye/odd/ocp/main/LoggerMain.java | 24 ++++++++++ .../odd/ocp/method/Impl/MailMethodImpl.java | 14 ++++++ .../odd/ocp/method/Impl/PrintMethodImpl.java | 15 ++++++ .../odd/ocp/method/Impl/SMSMethodImpl.java | 16 +++++++ .../odd/ocp/method/MethodInterface.java | 8 ++++ .../odd/ocp/type/Impl/RawLogTypeImpl.java | 16 +++++++ .../ocp/type/Impl/RawLogWithDateTypeImpl.java | 18 +++++++ .../mimieye/odd/ocp/type/TypeInterface.java | 8 ++++ .../com/mimieye/odd/ocp/util/DateUtil.java | 12 +++++ .../com/mimieye/odd/ocp/util/MailUtil.java | 9 ++++ .../com/mimieye/odd/ocp/util/SMSUtil.java | 9 ++++ 15 files changed, 266 insertions(+) create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/config/LoggerConstant.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/logger/Impl/LoggerImpl.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/logger/LoggerInterface.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/main/LoggerMain.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/MailMethodImpl.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/PrintMethodImpl.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/SMSMethodImpl.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/MethodInterface.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/Impl/RawLogTypeImpl.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/Impl/RawLogWithDateTypeImpl.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/TypeInterface.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/DateUtil.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/MailUtil.java create mode 100644 students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/SMSUtil.java diff --git a/students/402246209/learning/pom.xml b/students/402246209/learning/pom.xml index 129bccd496..435c8fd478 100644 --- a/students/402246209/learning/pom.xml +++ b/students/402246209/learning/pom.xml @@ -10,4 +10,51 @@ jar + + 1.8 + + + + + + + + org.apache.maven.plugins + maven-resources-plugin + 3.0.2 + + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.0 + + 1.8 + 1.8 + + UTF-8 + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.6 + + + + com.mimieye.odd.srp.main.PromotionEmailMain + + + + + + + + + \ No newline at end of file diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/config/LoggerConstant.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/config/LoggerConstant.java new file mode 100644 index 0000000000..2f19e884c5 --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/config/LoggerConstant.java @@ -0,0 +1,26 @@ +package com.mimieye.odd.ocp.config; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by Pierreluo on 2017/6/20. + */ +public class LoggerConstant { + public static final int RAW_LOG = 1; + public static final int RAW_LOG_WITH_DATE = 2; + public static final int EMAIL_LOG = 1; + public static final int SMS_LOG = 2; + public static final int PRINT_LOG = 3; + + public static final Map TPYE_MAP = new HashMap<>(); + public static final Map METHOD_MAP = new HashMap<>(); + + static { + TPYE_MAP.put(1, "com.mimieye.odd.ocp.type.Impl.RawLogTypeImpl"); + TPYE_MAP.put(2, "com.mimieye.odd.ocp.type.Impl.RawLogWithDateTypeImpl"); + METHOD_MAP.put(1, "com.mimieye.odd.ocp.method.Impl.MailMethodImpl"); + METHOD_MAP.put(2, "com.mimieye.odd.ocp.method.Impl.SMSMethodImpl"); + METHOD_MAP.put(3, "com.mimieye.odd.ocp.method.Impl.PrintMethodImpl"); + } +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/logger/Impl/LoggerImpl.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/logger/Impl/LoggerImpl.java new file mode 100644 index 0000000000..869aa45227 --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/logger/Impl/LoggerImpl.java @@ -0,0 +1,36 @@ +package com.mimieye.odd.ocp.logger.Impl; + +import com.mimieye.odd.ocp.config.LoggerConstant; +import com.mimieye.odd.ocp.logger.LoggerInterface; +import com.mimieye.odd.ocp.method.MethodInterface; +import com.mimieye.odd.ocp.type.TypeInterface; +import com.mimieye.odd.ocp.util.MailUtil; +import com.mimieye.odd.ocp.util.SMSUtil; + +public class LoggerImpl implements LoggerInterface{ + + private TypeInterface type; + private MethodInterface method; + private Integer typeInt; + private Integer methodInt; + + public LoggerImpl(int typeInt, int methodInt) throws IllegalAccessException, InstantiationException, ClassNotFoundException { + this.typeInt = typeInt; + this.methodInt = methodInt; + init(); + } + + private void init() throws ClassNotFoundException, IllegalAccessException, InstantiationException { + String typeClass = LoggerConstant.TPYE_MAP.get(typeInt); + String methodClass = LoggerConstant.METHOD_MAP.get(methodInt); + TypeInterface typeInterface = (TypeInterface)Class.forName(typeClass).newInstance(); + MethodInterface methodInterface = (MethodInterface)Class.forName(methodClass).newInstance(); + this.type = typeInterface; + this.method = methodInterface; + } + + public void log(String msg){ + method.execute(type.getMsg(msg)); + } +} + diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/logger/LoggerInterface.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/logger/LoggerInterface.java new file mode 100644 index 0000000000..43519090bf --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/logger/LoggerInterface.java @@ -0,0 +1,8 @@ +package com.mimieye.odd.ocp.logger; + +/** + * Created by Pierreluo on 2017/6/20. + */ +public interface LoggerInterface { + void log(String msg); +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/main/LoggerMain.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/main/LoggerMain.java new file mode 100644 index 0000000000..e8bdeb2f51 --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/main/LoggerMain.java @@ -0,0 +1,24 @@ +package com.mimieye.odd.ocp.main; + +import com.mimieye.odd.ocp.config.LoggerConstant; +import com.mimieye.odd.ocp.logger.Impl.LoggerImpl; +import com.mimieye.odd.ocp.logger.LoggerInterface; + +/** + * Created by Pierreluo on 2017/6/20. + */ +public class LoggerMain { + public static void main(String[] args) { + try { + LoggerInterface logger = new LoggerImpl(LoggerConstant.RAW_LOG, LoggerConstant.EMAIL_LOG); + String msg = "log content."; + logger.log(msg); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/MailMethodImpl.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/MailMethodImpl.java new file mode 100644 index 0000000000..dda6d6c5d3 --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/MailMethodImpl.java @@ -0,0 +1,14 @@ +package com.mimieye.odd.ocp.method.Impl; + +import com.mimieye.odd.ocp.method.MethodInterface; +import com.mimieye.odd.ocp.util.MailUtil; + +/** + * Created by Pierreluo on 2017/6/20. + */ +public class MailMethodImpl implements MethodInterface { + @Override + public void execute(String logMsg) { + MailUtil.send(logMsg); + } +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/PrintMethodImpl.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/PrintMethodImpl.java new file mode 100644 index 0000000000..04d67545fe --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/PrintMethodImpl.java @@ -0,0 +1,15 @@ +package com.mimieye.odd.ocp.method.Impl; + +import com.mimieye.odd.ocp.method.MethodInterface; +import com.mimieye.odd.ocp.util.MailUtil; + +/** + * Created by Pierreluo on 2017/6/20. + */ +public class PrintMethodImpl implements MethodInterface { + + @Override + public void execute(String logMsg) { + System.out.println("print console msg - " + logMsg); + } +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/SMSMethodImpl.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/SMSMethodImpl.java new file mode 100644 index 0000000000..14a8fe0c34 --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/Impl/SMSMethodImpl.java @@ -0,0 +1,16 @@ +package com.mimieye.odd.ocp.method.Impl; + +import com.mimieye.odd.ocp.method.MethodInterface; +import com.mimieye.odd.ocp.util.MailUtil; +import com.mimieye.odd.ocp.util.SMSUtil; + +/** + * Created by Pierreluo on 2017/6/20. + */ +public class SMSMethodImpl implements MethodInterface { + + @Override + public void execute(String logMsg) { + SMSUtil.send(logMsg); + } +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/MethodInterface.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/MethodInterface.java new file mode 100644 index 0000000000..9134e8eeae --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/method/MethodInterface.java @@ -0,0 +1,8 @@ +package com.mimieye.odd.ocp.method; + +/** + * Created by Pierreluo on 2017/6/20. + */ +public interface MethodInterface { + void execute(String logMsg); +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/Impl/RawLogTypeImpl.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/Impl/RawLogTypeImpl.java new file mode 100644 index 0000000000..0f912ec56a --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/Impl/RawLogTypeImpl.java @@ -0,0 +1,16 @@ +package com.mimieye.odd.ocp.type.Impl; + +import com.mimieye.odd.ocp.config.LoggerConstant; +import com.mimieye.odd.ocp.type.TypeInterface; +import com.mimieye.odd.ocp.util.DateUtil; + +/** + * Created by Pierreluo on 2017/6/20. + */ +public class RawLogTypeImpl implements TypeInterface { + + @Override + public String getMsg(String msg) { + return msg; + } +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/Impl/RawLogWithDateTypeImpl.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/Impl/RawLogWithDateTypeImpl.java new file mode 100644 index 0000000000..876e48a830 --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/Impl/RawLogWithDateTypeImpl.java @@ -0,0 +1,18 @@ +package com.mimieye.odd.ocp.type.Impl; + +import com.mimieye.odd.ocp.type.TypeInterface; +import com.mimieye.odd.ocp.util.DateUtil; + +/** + * Created by Pierreluo on 2017/6/20. + */ +public class RawLogWithDateTypeImpl implements TypeInterface { + + @Override + public String getMsg(String msg) { + String logMsg = msg; + String txtDate = DateUtil.getCurrentDateAsString(); + logMsg = txtDate + ": " + msg; + return logMsg; + } +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/TypeInterface.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/TypeInterface.java new file mode 100644 index 0000000000..2ed457c68d --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/type/TypeInterface.java @@ -0,0 +1,8 @@ +package com.mimieye.odd.ocp.type; + +/** + * Created by Pierreluo on 2017/6/20. + */ +public interface TypeInterface { + String getMsg(String msg); +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/DateUtil.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/DateUtil.java new file mode 100644 index 0000000000..a55ad2d667 --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/DateUtil.java @@ -0,0 +1,12 @@ +package com.mimieye.odd.ocp.util; + +import java.text.SimpleDateFormat; +import java.util.Date; + +public class DateUtil { + + public static String getCurrentDateAsString() { + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + } + +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/MailUtil.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/MailUtil.java new file mode 100644 index 0000000000..2b75360ea2 --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/MailUtil.java @@ -0,0 +1,9 @@ +package com.mimieye.odd.ocp.util; + +public class MailUtil { + + public static void send(String logMsg) { + System.out.println("send email msg - " + logMsg); + } + +} diff --git a/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/SMSUtil.java b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/SMSUtil.java new file mode 100644 index 0000000000..c07f9b46bc --- /dev/null +++ b/students/402246209/learning/src/main/java/com/mimieye/odd/ocp/util/SMSUtil.java @@ -0,0 +1,9 @@ +package com.mimieye.odd.ocp.util; + +public class SMSUtil { + + public static void send(String logMsg) { + System.out.println("send SMS msg - " + logMsg); + } + +} From 8b1c73cb86e834f98eeff649a07043496c120216 Mon Sep 17 00:00:00 2001 From: MIMIEYES Date: Wed, 21 Jun 2017 10:15:02 +0800 Subject: [PATCH 4/7] Create readme.md --- students/402246209/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 students/402246209/readme.md diff --git a/students/402246209/readme.md b/students/402246209/readme.md new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/students/402246209/readme.md @@ -0,0 +1 @@ + From bc4a9256568e2390efa6acf41eb0a6e616e9a0b1 Mon Sep 17 00:00:00 2001 From: EricWang Date: Wed, 21 Jun 2017 16:03:24 +0800 Subject: [PATCH 5/7] ood-ocp-homework --- students/251822722/ocp/logType/LogType.java | 12 ++++ students/251822722/ocp/logType/RawLog.java | 21 +++++++ .../251822722/ocp/logType/RawLogWithDate.java | 26 ++++++++ students/251822722/ocp/logger/DateLogger.java | 23 +++++++ students/251822722/ocp/logger/Logger.java | 60 +++++++++++++++++++ students/251822722/ocp/logger/MailLogger.java | 24 ++++++++ students/251822722/ocp/logger/SMSLogger.java | 24 ++++++++ students/251822722/ocp/util/DateUtil.java | 10 ++++ students/251822722/ocp/util/MailUtil.java | 10 ++++ students/251822722/ocp/util/SMSUtil.java | 10 ++++ 10 files changed, 220 insertions(+) create mode 100644 students/251822722/ocp/logType/LogType.java create mode 100644 students/251822722/ocp/logType/RawLog.java create mode 100644 students/251822722/ocp/logType/RawLogWithDate.java create mode 100644 students/251822722/ocp/logger/DateLogger.java create mode 100644 students/251822722/ocp/logger/Logger.java create mode 100644 students/251822722/ocp/logger/MailLogger.java create mode 100644 students/251822722/ocp/logger/SMSLogger.java create mode 100644 students/251822722/ocp/util/DateUtil.java create mode 100644 students/251822722/ocp/util/MailUtil.java create mode 100644 students/251822722/ocp/util/SMSUtil.java diff --git a/students/251822722/ocp/logType/LogType.java b/students/251822722/ocp/logType/LogType.java new file mode 100644 index 0000000000..a5e4774518 --- /dev/null +++ b/students/251822722/ocp/logType/LogType.java @@ -0,0 +1,12 @@ +package ocp.logType; + +/** + * ocp.ocp + * Created by Eric Wang on 6/21/17. + */ +public interface LogType { + + void setMessage(String message); + + String getMessage(); +} diff --git a/students/251822722/ocp/logType/RawLog.java b/students/251822722/ocp/logType/RawLog.java new file mode 100644 index 0000000000..cdbd4931fe --- /dev/null +++ b/students/251822722/ocp/logType/RawLog.java @@ -0,0 +1,21 @@ +package ocp.logType; + +/** + * ocp.ocp.logType + * Created by Eric Wang on 6/21/17. + */ +public class RawLog implements LogType{ + + private String logMsg; + + @Override + public void setMessage(String message) { + logMsg = message; + + } + + @Override + public String getMessage() { + return logMsg; + } +} diff --git a/students/251822722/ocp/logType/RawLogWithDate.java b/students/251822722/ocp/logType/RawLogWithDate.java new file mode 100644 index 0000000000..03044c7229 --- /dev/null +++ b/students/251822722/ocp/logType/RawLogWithDate.java @@ -0,0 +1,26 @@ +package ocp.logType; + +import ocp.util.DateUtil; + +/** + * ocp.ocp.logType + * Created by Eric Wang on 6/21/17. + */ +public class RawLogWithDate implements LogType { + + + private String logMsg; + + @Override + public void setMessage(String message) { + + String txtDate = DateUtil.getCurrentDateAsString(); + logMsg = txtDate + ": " + message; + + } + + @Override + public String getMessage() { + return logMsg; + } +} diff --git a/students/251822722/ocp/logger/DateLogger.java b/students/251822722/ocp/logger/DateLogger.java new file mode 100644 index 0000000000..ddffbc0d91 --- /dev/null +++ b/students/251822722/ocp/logger/DateLogger.java @@ -0,0 +1,23 @@ +package ocp.logger; + +import ocp.logType.LogType; + +/** + * ocp.ocp.logger + * Created by Eric Wang on 6/21/17. + */ +public class DateLogger extends Logger { + + LogType logType; + + public DateLogger(LogType logType) { + this.logType = logType; + } + + + public void log(String msg) { + + this.logType.setMessage(msg); + System.out.println(logType.getMessage()); + } +} diff --git a/students/251822722/ocp/logger/Logger.java b/students/251822722/ocp/logger/Logger.java new file mode 100644 index 0000000000..2c72f293de --- /dev/null +++ b/students/251822722/ocp/logger/Logger.java @@ -0,0 +1,60 @@ +package ocp.logger; + +import ocp.logType.LogType; +import ocp.logType.RawLog; +import ocp.logType.RawLogWithDate; + +public class Logger { + + public final int RAW_LOG = 1; + public final int RAW_LOG_WITH_DATE = 2; + public final int EMAIL_LOG = 1; + public final int SMS_LOG = 2; + public final int PRINT_LOG = 3; + + public Logger(){ + + } + + + + public Logger getLogger(int logType, int logMethod) { + + LogType logTypeClass; + Logger logger; + + + switch (logType) { + case RAW_LOG: + logTypeClass = new RawLog(); + break; + case RAW_LOG_WITH_DATE: + logTypeClass = new RawLogWithDate(); + break; + default: + logTypeClass = new RawLog(); + + } + + + switch (logMethod) { + case EMAIL_LOG: + logger = new MailLogger(logTypeClass); + break; + case SMS_LOG: + logger = new SMSLogger(logTypeClass); + break; + case PRINT_LOG: + logger = new DateLogger(logTypeClass); + break; + default: + logger = new MailLogger(logTypeClass); + + } + + return logger; + + + } +} + diff --git a/students/251822722/ocp/logger/MailLogger.java b/students/251822722/ocp/logger/MailLogger.java new file mode 100644 index 0000000000..02878d1172 --- /dev/null +++ b/students/251822722/ocp/logger/MailLogger.java @@ -0,0 +1,24 @@ +package ocp.logger; + +import ocp.util.MailUtil; +import ocp.logType.LogType; + +/** + * ocp.ocp.logger + * Created by Eric Wang on 6/21/17. + */ +public class MailLogger extends Logger { + + LogType logType; + + public MailLogger(LogType logType) { + this.logType = logType; + } + + + public void log(String msg) { + + this.logType.setMessage(msg); + MailUtil.send(logType.getMessage()); + } +} diff --git a/students/251822722/ocp/logger/SMSLogger.java b/students/251822722/ocp/logger/SMSLogger.java new file mode 100644 index 0000000000..d9c5ca30f7 --- /dev/null +++ b/students/251822722/ocp/logger/SMSLogger.java @@ -0,0 +1,24 @@ +package ocp.logger; + +import ocp.util.SMSUtil; +import ocp.logType.LogType; + +/** + * ocp.ocp.logger + * Created by Eric Wang on 6/21/17. + */ +public class SMSLogger extends Logger { + + LogType logType; + + public SMSLogger(LogType logType) { + this.logType = logType; + } + + + public void log(String msg) { + + this.logType.setMessage(msg); + SMSUtil.send(logType.getMessage()); + } +} diff --git a/students/251822722/ocp/util/DateUtil.java b/students/251822722/ocp/util/DateUtil.java new file mode 100644 index 0000000000..a4361d96c0 --- /dev/null +++ b/students/251822722/ocp/util/DateUtil.java @@ -0,0 +1,10 @@ +package ocp.util; + +public class DateUtil { + + public static String getCurrentDateAsString() { + + return null; + } + +} diff --git a/students/251822722/ocp/util/MailUtil.java b/students/251822722/ocp/util/MailUtil.java new file mode 100644 index 0000000000..63c497f111 --- /dev/null +++ b/students/251822722/ocp/util/MailUtil.java @@ -0,0 +1,10 @@ +package ocp.util; + +public class MailUtil { + + public static void send(String logMsg) { + // TODO Auto-generated method stub + + } + +} diff --git a/students/251822722/ocp/util/SMSUtil.java b/students/251822722/ocp/util/SMSUtil.java new file mode 100644 index 0000000000..a31e93837c --- /dev/null +++ b/students/251822722/ocp/util/SMSUtil.java @@ -0,0 +1,10 @@ +package ocp.util; + +public class SMSUtil { + + public static void send(String logMsg) { + // TODO Auto-generated method stub + + } + +} From 04778833b4bdcd7197780072ec1d45bddb2bc420 Mon Sep 17 00:00:00 2001 From: onlyliuxin <14703250@qq.com> Date: Thu, 22 Jun 2017 08:57:06 +0800 Subject: [PATCH 6/7] srp homework refactor --- .../srp/good/template/MailBodyTemplate.java | 5 +++ .../good/template/TextMailBodyTemplate.java | 19 ++++++++++ .../ood/srp/good1/Configuration.java | 23 ++++++++++++ .../ood/srp/good1/ConfigurationKeys.java | 9 +++++ .../com/coderising/ood/srp/good1/Mail.java | 29 +++++++++++++++ .../coderising/ood/srp/good1/MailSender.java | 35 +++++++++++++++++++ .../com/coderising/ood/srp/good1/Product.java | 14 ++++++++ .../ood/srp/good1/ProductService.java | 9 +++++ .../ood/srp/good1/PromotionJob.java | 24 +++++++++++++ .../com/coderising/ood/srp/good1/User.java | 24 +++++++++++++ .../coderising/ood/srp/good1/UserService.java | 11 ++++++ .../ood/srp/good2/ProductService.java | 12 +++++++ .../coderising/ood/srp/good2/UserService.java | 13 +++++++ 13 files changed, 227 insertions(+) create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good/template/MailBodyTemplate.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good/template/TextMailBodyTemplate.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Configuration.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/ConfigurationKeys.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Mail.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/MailSender.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Product.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/ProductService.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/PromotionJob.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/User.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/UserService.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good2/ProductService.java create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good2/UserService.java diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good/template/MailBodyTemplate.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good/template/MailBodyTemplate.java new file mode 100644 index 0000000000..e5df642be9 --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good/template/MailBodyTemplate.java @@ -0,0 +1,5 @@ +package com.coderising.ood.srp.good.template; + +public interface MailBodyTemplate { + public String render(); +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good/template/TextMailBodyTemplate.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good/template/TextMailBodyTemplate.java new file mode 100644 index 0000000000..38793717a8 --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good/template/TextMailBodyTemplate.java @@ -0,0 +1,19 @@ +package com.coderising.ood.srp.good.template; + +import java.util.Map; + +public class TextMailBodyTemplate implements MailBodyTemplate { + + private MapparamMap ; + + public TextMailBodyTemplate(Map map){ + paramMap = map; + } + + @Override + public String render() { + //使用某种模板技术实现Render + return null; + } + +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Configuration.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Configuration.java new file mode 100644 index 0000000000..55f0fad677 --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Configuration.java @@ -0,0 +1,23 @@ +package com.coderising.ood.srp.good1; +import java.util.HashMap; +import java.util.Map; + +public class Configuration { + + static Map configurations = new HashMap<>(); + static{ + configurations.put(ConfigurationKeys.SMTP_SERVER, "smtp.163.com"); + configurations.put(ConfigurationKeys.ALT_SMTP_SERVER, "smtp1.163.com"); + configurations.put(ConfigurationKeys.EMAIL_ADMIN, "admin@company.com"); + } + /** + * 应该从配置文件读, 但是这里简化为直接从一个map 中去读 + * @param key + * @return + */ + public String getProperty(String key) { + + return configurations.get(key); + } + +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/ConfigurationKeys.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/ConfigurationKeys.java new file mode 100644 index 0000000000..945db9004a --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/ConfigurationKeys.java @@ -0,0 +1,9 @@ +package com.coderising.ood.srp.good1; + +public class ConfigurationKeys { + + public static final String SMTP_SERVER = "smtp.server"; + public static final String ALT_SMTP_SERVER = "alt.smtp.server"; + public static final String EMAIL_ADMIN = "email.admin"; + +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Mail.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Mail.java new file mode 100644 index 0000000000..83099ed16a --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Mail.java @@ -0,0 +1,29 @@ +package com.coderising.ood.srp.good1; + +import java.util.List; + +import com.coderising.ood.srp.good.template.MailBodyTemplate; + +public class Mail { + + private User user; + + public Mail(User u){ + this.user = u; + } + public String getAddress(){ + return user.getEMailAddress(); + } + public String getSubject(){ + return "您关注的产品降价了"; + } + public String getBody(){ + + return "尊敬的 "+user.getName()+", 您关注的产品 " + this.buildProductDescList() + " 降价了,欢迎购买!" ; + } + private String buildProductDescList() { + List products = user.getSubscribedProducts(); + //.... 实现略... + return null; + } +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/MailSender.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/MailSender.java new file mode 100644 index 0000000000..0503d1a88b --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/MailSender.java @@ -0,0 +1,35 @@ +package com.coderising.ood.srp.good1; + +public class MailSender { + + private String fromAddress ; + private String smtpHost; + private String altSmtpHost; + + public MailSender(Configuration config){ + this.fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN); + this.smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER); + this.altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER); + } + + public void sendMail(Mail mail){ + try{ + sendEmail(mail,this.smtpHost); + }catch(Exception e){ + try{ + sendEmail(mail,this.altSmtpHost); + }catch (Exception ex){ + System.out.println("通过备用 SMTP服务器发送邮件失败: " + ex.getMessage()); + } + + } + } + + private void sendEmail(Mail mail, String smtpHost){ + + String toAddress = mail.getAddress(); + String subject = mail.getSubject(); + String msg = mail.getBody(); + //发送邮件 + } +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Product.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Product.java new file mode 100644 index 0000000000..55617461cd --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Product.java @@ -0,0 +1,14 @@ +package com.coderising.ood.srp.good1; + + + +public class Product { + + private String id; + private String desc; + public String getDescription(){ + return desc; + } + + +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/ProductService.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/ProductService.java new file mode 100644 index 0000000000..4109bfa9dc --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/ProductService.java @@ -0,0 +1,9 @@ +package com.coderising.ood.srp.good1; + + +public class ProductService { + public Product getPromotionProduct(){ + //从文本文件中读取文件列表 + return null; + } +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/PromotionJob.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/PromotionJob.java new file mode 100644 index 0000000000..8e41069bd9 --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/PromotionJob.java @@ -0,0 +1,24 @@ +package com.coderising.ood.srp.good1; + +import java.util.List; + +public class PromotionJob { + + private ProductService productService = null ; //获取production service + private UserService userService = null ;// 获取UserService + + public void run(){ + + Configuration cfg = new Configuration(); + + Product p = productService.getPromotionProduct(); + + List users = userService.getUsers(p); + + MailSender mailSender = new MailSender(cfg); + + for(User user : users){ + mailSender.sendMail(new Mail(user)); + } + } +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/User.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/User.java new file mode 100644 index 0000000000..114476bb64 --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/User.java @@ -0,0 +1,24 @@ +package com.coderising.ood.srp.good1; + +import java.util.List; + + + +public class User { + + private String name; + private String emailAddress; + + private List subscribedProducts; + + public String getName(){ + return name; + } + public String getEMailAddress() { + return emailAddress; + } + public List getSubscribedProducts(){ + return this.subscribedProducts; + } + +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/UserService.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/UserService.java new file mode 100644 index 0000000000..1e08138cff --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/UserService.java @@ -0,0 +1,11 @@ +package com.coderising.ood.srp.good1; + +import java.util.List; + +public class UserService { + + public List getUsers(Product product){ + //调用DAO相关的类从数据库中读取订阅产品的用户列表 + return null; + } +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good2/ProductService.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good2/ProductService.java new file mode 100644 index 0000000000..5ca5636291 --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good2/ProductService.java @@ -0,0 +1,12 @@ +package com.coderising.ood.srp.good2; + +import java.util.List; + +import com.coderising.ood.srp.good1.Product; + +public class ProductService { + public List getPromotionProducts(){ + //从文本文件中读取文件列表 + return null; + } +} diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good2/UserService.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good2/UserService.java new file mode 100644 index 0000000000..f86307e701 --- /dev/null +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good2/UserService.java @@ -0,0 +1,13 @@ +package com.coderising.ood.srp.good2; + +import java.util.List; + +import com.coderising.ood.srp.good1.Product; +import com.coderising.ood.srp.good1.User; + +public class UserService { + public List getUsers(List products){ + //调用DAO相关的类从数据库中读取订阅产品的用户列表 + return null; + } +} From 4cd3a7847841a1102047ed14549827b58cc84125 Mon Sep 17 00:00:00 2001 From: onlyliuxin <14703250@qq.com> Date: Fri, 23 Jun 2017 09:40:17 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=96=B0=E5=BB=BAknowledge-point=E7=9B=AE?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- liuxin/knowledge-point/pom.xml | 32 ++++++++++++++++ .../src/main/java/cas/CASSequence.java | 18 +++++++++ .../src/main/java/cas/NoBlockingStack.java | 34 +++++++++++++++++ .../src/main/java/cas/Sequence.java | 11 ++++++ .../src/main/java/threadlocal/Context.java | 20 ++++++++++ .../java/threadlocal/TransactionManager.java | 22 +++++++++++ .../main/java/threadpool/BlockingQueue.java | 35 ++++++++++++++++++ .../src/main/java/threadpool/Task.java | 5 +++ .../src/main/java/threadpool/ThreadPool.java | 37 +++++++++++++++++++ .../main/java/threadpool/WorkerThread.java | 33 +++++++++++++++++ 10 files changed, 247 insertions(+) create mode 100644 liuxin/knowledge-point/pom.xml create mode 100644 liuxin/knowledge-point/src/main/java/cas/CASSequence.java create mode 100644 liuxin/knowledge-point/src/main/java/cas/NoBlockingStack.java create mode 100644 liuxin/knowledge-point/src/main/java/cas/Sequence.java create mode 100644 liuxin/knowledge-point/src/main/java/threadlocal/Context.java create mode 100644 liuxin/knowledge-point/src/main/java/threadlocal/TransactionManager.java create mode 100644 liuxin/knowledge-point/src/main/java/threadpool/BlockingQueue.java create mode 100644 liuxin/knowledge-point/src/main/java/threadpool/Task.java create mode 100644 liuxin/knowledge-point/src/main/java/threadpool/ThreadPool.java create mode 100644 liuxin/knowledge-point/src/main/java/threadpool/WorkerThread.java diff --git a/liuxin/knowledge-point/pom.xml b/liuxin/knowledge-point/pom.xml new file mode 100644 index 0000000000..3dc438c7d9 --- /dev/null +++ b/liuxin/knowledge-point/pom.xml @@ -0,0 +1,32 @@ + + 4.0.0 + + com.coderising + knowledge-point + 0.0.1-SNAPSHOT + jar + + knowledge-point + http://maven.apache.org + + + UTF-8 + + + + + + junit + junit + 4.12 + + + + + + aliyunmaven + http://maven.aliyun.com/nexus/content/groups/public/ + + + diff --git a/liuxin/knowledge-point/src/main/java/cas/CASSequence.java b/liuxin/knowledge-point/src/main/java/cas/CASSequence.java new file mode 100644 index 0000000000..dcff77d9bf --- /dev/null +++ b/liuxin/knowledge-point/src/main/java/cas/CASSequence.java @@ -0,0 +1,18 @@ +package cas; + +import java.util.concurrent.atomic.AtomicInteger; + +public class CASSequence{ + + private AtomicInteger count = new AtomicInteger(0); + + public int next(){ + while(true){ + int current = count.get(); + int next = current +1; + if(count.compareAndSet(current, next)){ + return next; + } + } + } +} \ No newline at end of file diff --git a/liuxin/knowledge-point/src/main/java/cas/NoBlockingStack.java b/liuxin/knowledge-point/src/main/java/cas/NoBlockingStack.java new file mode 100644 index 0000000000..d7be44c69a --- /dev/null +++ b/liuxin/knowledge-point/src/main/java/cas/NoBlockingStack.java @@ -0,0 +1,34 @@ +package cas; + +import java.util.concurrent.atomic.AtomicReference; + +public class NoBlockingStack { + static class Node { + final E item; + Node next; + public Node(E item) { this.item = item; } + } + + AtomicReference> head = new AtomicReference>(); + + public void push(E item) { + Node newHead = new Node(item); + Node oldHead; + do { + oldHead = head.get(); + newHead.next = oldHead; + } while (!head.compareAndSet(oldHead, newHead)); + } + public E pop() { + Node oldHead; + Node newHead; + do { + oldHead = head.get(); + if (oldHead == null) + return null; + newHead = oldHead.next; + } while (!head.compareAndSet(oldHead,newHead)); + return oldHead.item; + } + +} diff --git a/liuxin/knowledge-point/src/main/java/cas/Sequence.java b/liuxin/knowledge-point/src/main/java/cas/Sequence.java new file mode 100644 index 0000000000..688224e251 --- /dev/null +++ b/liuxin/knowledge-point/src/main/java/cas/Sequence.java @@ -0,0 +1,11 @@ +package cas; + +public class Sequence{ + + private int value; + + public int next(){ + return value ++; + } + +} diff --git a/liuxin/knowledge-point/src/main/java/threadlocal/Context.java b/liuxin/knowledge-point/src/main/java/threadlocal/Context.java new file mode 100644 index 0000000000..d84584397b --- /dev/null +++ b/liuxin/knowledge-point/src/main/java/threadlocal/Context.java @@ -0,0 +1,20 @@ +package threadlocal; +import java.util.HashMap; +import java.util.Map; + +public class Context { + + private static final ThreadLocal txThreadLocal + = new ThreadLocal(); + + public static void setTransactionID(String txID) { + txThreadLocal.set(txID); + + } + + public static String getTransactionId() { + return txThreadLocal.get(); + } + +} + diff --git a/liuxin/knowledge-point/src/main/java/threadlocal/TransactionManager.java b/liuxin/knowledge-point/src/main/java/threadlocal/TransactionManager.java new file mode 100644 index 0000000000..8a5283fcab --- /dev/null +++ b/liuxin/knowledge-point/src/main/java/threadlocal/TransactionManager.java @@ -0,0 +1,22 @@ +package threadlocal; + +public class TransactionManager { + private static final ThreadLocal context = new ThreadLocal(); + + public static void startTransaction() { + // logic to start a transaction + // ... + String txID = null; + context.set(txID); + } + + public static String getTransactionId() { + return context.get(); + } + + public static void endTransaction() { + // logic to end a transaction + // … + context.remove(); + } +} diff --git a/liuxin/knowledge-point/src/main/java/threadpool/BlockingQueue.java b/liuxin/knowledge-point/src/main/java/threadpool/BlockingQueue.java new file mode 100644 index 0000000000..faca2d2c70 --- /dev/null +++ b/liuxin/knowledge-point/src/main/java/threadpool/BlockingQueue.java @@ -0,0 +1,35 @@ +package threadpool; +import java.util.LinkedList; +import java.util.List; + +public class BlockingQueue { + + private List queue = new LinkedList(); + private int limit = 10; + + public BlockingQueue(int limit) { + this.limit = limit; + } + + public synchronized void enqueue(Object item) throws InterruptedException { + while (this.queue.size() == this.limit) { + wait(); + } + if (this.queue.size() == 0) { + notifyAll(); + } + this.queue.add(item); + } + + public synchronized Object dequeue() throws InterruptedException { + while (this.queue.size() == 0) { + wait(); + } + if (this.queue.size() == this.limit) { + notifyAll(); + } + + return this.queue.remove(0); + } + +} diff --git a/liuxin/knowledge-point/src/main/java/threadpool/Task.java b/liuxin/knowledge-point/src/main/java/threadpool/Task.java new file mode 100644 index 0000000000..07413d9798 --- /dev/null +++ b/liuxin/knowledge-point/src/main/java/threadpool/Task.java @@ -0,0 +1,5 @@ +package threadpool; + +public interface Task { + public void execute(); +} diff --git a/liuxin/knowledge-point/src/main/java/threadpool/ThreadPool.java b/liuxin/knowledge-point/src/main/java/threadpool/ThreadPool.java new file mode 100644 index 0000000000..f508f76eb5 --- /dev/null +++ b/liuxin/knowledge-point/src/main/java/threadpool/ThreadPool.java @@ -0,0 +1,37 @@ +package threadpool; +import java.util.ArrayList; +import java.util.List; + + +public class ThreadPool { + + private BlockingQueue taskQueue = null; + private List threads = new ArrayList(); + private boolean isStopped = false; + + public ThreadPool(int numOfThreads, int maxNumOfTasks){ + taskQueue = new BlockingQueue(maxNumOfTasks); + + for(int i=0; i