From 43837188dff4aadc1506e1d0365d4d3ced3077bf Mon Sep 17 00:00:00 2001
From: fredel <136427763@qq.com>
Date: Sat, 17 Jun 2017 20:52:51 +0800
Subject: [PATCH 01/25] new project
---
students/136427763/ood/ood-assignment/pom.xml | 32 +++
.../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/MailUtil.java | 18 ++
.../com/coderising/ood/srp/PromotionMail.java | 199 ++++++++++++++++++
.../coderising/ood/srp/product_promotion.txt | 4 +
7 files changed, 310 insertions(+)
create mode 100644 students/136427763/ood/ood-assignment/pom.xml
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
diff --git a/students/136427763/ood/ood-assignment/pom.xml b/students/136427763/ood/ood-assignment/pom.xml
new file mode 100644
index 0000000000..1be81576cc
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/pom.xml
@@ -0,0 +1,32 @@
+
+ 4.0.0
+
+ com.coderising
+ ood-assignment
+ 0.0.1-SNAPSHOT
+ jar
+
+ ood-assignment
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+
+ junit
+ junit
+ 4.12
+
+
+
+
+
+ aliyunmaven
+ http://maven.aliyun.com/nexus/content/groups/public/
+
+
+
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
new file mode 100644
index 0000000000..927c7155cc
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/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/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..868a03ff83
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/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/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..65383e4dba
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/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/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..373f3ee306
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
@@ -0,0 +1,18 @@
+package com.coderising.ood.srp;
+
+public class MailUtil {
+
+ public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
+ boolean debug) {
+ //假装发了一封邮件
+ 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());
+
+ }
+
+
+}
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..94bfcbaf54
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -0,0 +1,199 @@
+package com.coderising.ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+public class PromotionMail {
+
+
+ protected String sendMailQuery = null;
+
+
+ protected String smtpHost = null;
+ protected String altSmtpHost = null;
+ protected String fromAddress = null;
+ protected String toAddress = null;
+ protected String subject = null;
+ protected String message = null;
+
+ protected String productID = null;
+ protected String productDesc = null;
+
+ private static Configuration config;
+
+
+
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+
+ public static void main(String[] args) throws Exception {
+
+ File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+ boolean emailDebug = false;
+
+ PromotionMail pe = new PromotionMail(f, emailDebug);
+
+ }
+
+
+ public PromotionMail(File file, boolean mailDebug) throws Exception {
+
+ //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
+ readFile(file);
+
+
+ config = new Configuration();
+
+ setSMTPHost();
+ setAltSMTPHost();
+
+
+ setFromAddress();
+
+
+ setLoadQuery();
+
+ sendEMails(mailDebug, loadMailingList());
+
+
+ }
+
+
+
+
+ protected void setProductID(String productID)
+ {
+ this.productID = productID;
+
+ }
+
+ protected String getproductID()
+ {
+ return productID;
+ }
+
+ protected void setLoadQuery() throws Exception {
+
+ sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + productID +"' "
+ + "and send_mail=1 ";
+
+
+ System.out.println("loadQuery set");
+ }
+
+
+ protected void setSMTPHost()
+ {
+ smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ }
+
+
+ protected void setAltSMTPHost()
+ {
+ altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+
+ }
+
+
+ protected void setFromAddress()
+ {
+ fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+ protected void setMessage(HashMap userInfo) throws IOException
+ {
+
+ String name = (String) userInfo.get(NAME_KEY);
+
+ subject = "您关注的产品降价了";
+ message = "尊敬的 "+name+", 您关注的产品 " + productDesc + " 降价了,欢迎购买!" ;
+
+
+
+ }
+
+
+ protected void readFile(File file) throws IOException // @02C
+ {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+
+ setProductID(data[0]);
+ setProductDesc(data[1]);
+
+ System.out.println("产品ID = " + productID + "\n");
+ System.out.println("产品描述 = " + productDesc + "\n");
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ }
+
+ private void setProductDesc(String desc) {
+ this.productDesc = desc;
+ }
+
+
+ protected void configureEMail(HashMap userInfo) throws IOException
+ {
+ toAddress = (String) userInfo.get(EMAIL_KEY);
+ if (toAddress.length() > 0)
+ setMessage(userInfo);
+ }
+
+ protected List loadMailingList() throws Exception {
+ return DBUtil.query(this.sendMailQuery);
+ }
+
+
+ protected void sendEMails(boolean debug, List mailingList) throws IOException
+ {
+
+ System.out.println("开始发送邮件");
+
+
+ if (mailingList != null) {
+ Iterator iter = mailingList.iterator();
+ while (iter.hasNext()) {
+ configureEMail((HashMap) iter.next());
+ try
+ {
+ if (toAddress.length() > 0)
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
+ }
+ catch (Exception e)
+ {
+
+ try {
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
+
+ } catch (Exception e2)
+ {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+ }
+ }
+ }
+
+
+ }
+
+ else {
+ System.out.println("没有邮件发送");
+
+ }
+
+ }
+}
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..0c0124cc61
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/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 44e471c739322408ee5b08aefb8ac50a5dd1cb93 Mon Sep 17 00:00:00 2001
From: fredel <136427763@qq.com>
Date: Sat, 17 Jun 2017 23:45:09 +0800
Subject: [PATCH 02/25] modify ood
---
.../ood/{srp => config}/Configuration.java | 4 +-
.../{srp => config}/ConfigurationKeys.java | 6 +-
.../ood/{srp => config}/product_promotion.txt | 0
.../coderising/ood/mail/PromotionMail.java | 23 ++
.../com/coderising/ood/model/MailMessage.java | 38 ++++
.../com/coderising/ood/model/MailSender.java | 51 +++++
.../com/coderising/ood/model/MailSetting.java | 68 ++++++
.../com/coderising/ood/model/Product.java | 39 ++++
.../ood/model/SubcribeMailReciver.java | 27 +++
.../com/coderising/ood/srp/PromotionMail.java | 199 ------------------
.../coderising/ood/{srp => util}/DBUtil.java | 2 +-
.../com/coderising/ood/util/FileUtil.java | 39 ++++
.../ood/{srp => util}/MailUtil.java | 2 +-
13 files changed, 295 insertions(+), 203 deletions(-)
rename students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/{srp => config}/Configuration.java (90%)
rename students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/{srp => config}/ConfigurationKeys.java (59%)
rename students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/{srp => config}/product_promotion.txt (100%)
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/mail/PromotionMail.java
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailMessage.java
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailSender.java
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailSetting.java
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/Product.java
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/SubcribeMailReciver.java
delete mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
rename students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/{srp => util}/DBUtil.java (89%)
create mode 100644 students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/FileUtil.java
rename students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/{srp => util}/MailUtil.java (91%)
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/Configuration.java
similarity index 90%
rename from students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
rename to students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/Configuration.java
index 927c7155cc..7787c10665 100644
--- a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/Configuration.java
@@ -1,9 +1,11 @@
-package com.coderising.ood.srp;
+package com.coderising.ood.config;
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");
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/ConfigurationKeys.java
similarity index 59%
rename from students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
rename to students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/ConfigurationKeys.java
index 868a03ff83..a3595d3252 100644
--- a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/ConfigurationKeys.java
@@ -1,6 +1,10 @@
-package com.coderising.ood.srp;
+package com.coderising.ood.config;
public class ConfigurationKeys {
+
+ public static final String NAME_KEY = "NAME";
+ public static final String EMAIL_KEY = "EMAIL";
+
public static final String SMTP_SERVER = "smtp.server";
public static final String ALT_SMTP_SERVER = "alt.smtp.server";
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/product_promotion.txt
similarity index 100%
rename from students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
rename to students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/product_promotion.txt
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/mail/PromotionMail.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/mail/PromotionMail.java
new file mode 100644
index 0000000000..df9965be08
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/mail/PromotionMail.java
@@ -0,0 +1,23 @@
+package com.coderising.ood.mail;
+
+import java.io.File;
+import java.util.List;
+
+import com.coderising.ood.model.MailSender;
+import com.coderising.ood.model.MailSetting;
+import com.coderising.ood.model.Product;
+import com.coderising.ood.model.SubcribeMailReciver;
+import com.coderising.ood.util.FileUtil;
+
+public class PromotionMail {
+
+ public static void main(String[] args) throws Exception {
+ File file = new File("D:\\homework\\coding2017\\students\\136427763\\ood\\ood-assignment\\src\\main\\java\\com\\coderising\\ood\\config\\product_promotion.txt");
+ Product product=FileUtil.readProductFile(file);
+ SubcribeMailReciver subcribeMailReciver=new SubcribeMailReciver();
+ List UserList=subcribeMailReciver.getMailReciverList(product);
+ boolean emailDebug = false;
+ MailSender mailSender=new MailSender();
+ mailSender.sendEMails(emailDebug, UserList, product);
+ }
+}
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailMessage.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailMessage.java
new file mode 100644
index 0000000000..23bbd87935
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailMessage.java
@@ -0,0 +1,38 @@
+
+package com.coderising.ood.model;
+
+import java.util.HashMap;
+
+/**
+ * @author 作者 E-mail:
+ * @version 创建时间:2017年6月17日 下午9:13:21
+ * 类说明
+ */
+public class MailMessage {
+
+ private String subject;
+
+ private String message;
+
+ private String toAddress;
+
+
+ public void createProductMessage(Product product,HashMap userInfo) {
+ subject = "您关注的产品降价了";
+ message = "尊敬的 "+userInfo.get("NAME")+", 您关注的产品 " + product.getmProductDesc() + " 降价了,欢迎购买!" ;
+ toAddress=(String) userInfo.get("EMAIL");
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+
+ public String getToAddress() {
+ return toAddress;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+}
+
\ No newline at end of file
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailSender.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailSender.java
new file mode 100644
index 0000000000..0c51fa5ce3
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailSender.java
@@ -0,0 +1,51 @@
+package com.coderising.ood.model;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import com.coderising.ood.util.DBUtil;
+import com.coderising.ood.util.MailUtil;
+import com.sun.jndi.cosnaming.IiopUrl.Address;
+
+/**
+ * @author 作者 E-mail:
+ * @version 创建时间:2017年6月17日 下午9:11:59 类说明
+ */
+public class MailSender {
+
+ public void sendEMails(boolean debug, List mailingList, Product product)throws IOException {
+ MailMessage mailMessage = new MailMessage();
+ System.out.println("开始发送邮件");
+ HashMap hashMap;
+ if (mailingList != null) {
+ Iterator iter = mailingList.iterator();
+ while (iter.hasNext()) {
+ hashMap = (HashMap) iter.next();
+ mailMessage.createProductMessage(product, hashMap);
+ try {
+ if (mailMessage.getToAddress().length() > 0)
+ MailUtil.sendEmail(mailMessage.getToAddress(), MailSetting
+ .getInstannce().getmFromAddress(), mailMessage
+ .getSubject(), mailMessage.getMessage(), MailSetting
+ .getInstannce().getmSmtpHost(), debug);
+ } catch (Exception e) {
+ try {
+ MailUtil.sendEmail(mailMessage.getToAddress(), MailSetting
+ .getInstannce().getmFromAddress(), mailMessage
+ .getSubject(), mailMessage.getMessage(), MailSetting
+ .getInstannce().getmSmtpHost(), debug);
+ } catch (Exception e2) {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2
+ .getMessage());
+ }
+ }
+ }
+ }
+ else {
+ System.out.println("没有邮件发送");
+ }
+ }
+
+}
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailSetting.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailSetting.java
new file mode 100644
index 0000000000..57d33d6c91
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/MailSetting.java
@@ -0,0 +1,68 @@
+package com.coderising.ood.model;
+
+import com.coderising.ood.config.Configuration;
+import com.coderising.ood.config.ConfigurationKeys;
+
+/**
+ * @author 作者 E-mail:
+ * @version 创建时间:2017年6月17日 下午9:50:47 类说明
+ */
+public class MailSetting {
+ private String mSmtpHost;
+
+ private String mAltmSmtpHost;
+
+ private Configuration mConfig;
+
+ private String mFromAddress;
+
+ public String getmFromAddress() {
+ return mFromAddress;
+ }
+
+ private static MailSetting mailSetting=null;
+
+ private static final Object mObject=new Object();
+
+ public static MailSetting getInstannce(){
+ synchronized (mObject) {
+ if(null==mailSetting){
+ mailSetting =new MailSetting();
+ return mailSetting;
+ }
+ return mailSetting;
+ }
+ }
+
+ public MailSetting() {
+ mConfig=new Configuration();
+ init();
+ }
+
+ private void init() {
+ setmAltmSmtpHost();
+ setmFromAddress();
+ setmSmtpHost();
+ }
+
+ public String getmSmtpHost() {
+ return mSmtpHost;
+ }
+
+ public String getmAltmSmtpHost() {
+ return mAltmSmtpHost;
+ }
+
+ protected void setmAltmSmtpHost() {
+ mAltmSmtpHost = mConfig.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+ }
+
+ protected void setmFromAddress() {
+ mFromAddress = mConfig.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+ protected void setmSmtpHost() {
+ mSmtpHost = mConfig.getProperty(ConfigurationKeys.SMTP_SERVER);
+ }
+
+}
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/Product.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/Product.java
new file mode 100644
index 0000000000..c2d2a5887d
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/Product.java
@@ -0,0 +1,39 @@
+
+package com.coderising.ood.model;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+/**
+ * @author 作者 E-mail:
+ * @version 创建时间:2017年6月17日 下午9:13:21
+ * 类说明
+ */
+public class Product {
+
+ private String mProductId;
+
+ private String mProductDesc;
+
+ public String getmProductId() {
+ return mProductId;
+ }
+
+ public void setmProductId(String mProductId) {
+ this.mProductId = mProductId;
+ }
+
+ public String getmProductDesc() {
+ return mProductDesc;
+ }
+
+ public void setmProductDesc(String mProductDesc) {
+ this.mProductDesc = mProductDesc;
+ }
+
+
+
+}
+
\ No newline at end of file
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/SubcribeMailReciver.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/SubcribeMailReciver.java
new file mode 100644
index 0000000000..913e9164e2
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/model/SubcribeMailReciver.java
@@ -0,0 +1,27 @@
+package com.coderising.ood.model;
+
+import java.util.List;
+
+import com.coderising.ood.util.DBUtil;
+
+/**
+ * @author 作者 E-mail:
+ * @version 创建时间:2017年6月17日 下午10:51:43 类说明
+ */
+public class SubcribeMailReciver {
+
+ private String sendMailQuery;
+
+ private void setLoadQuery(Product product) throws Exception {
+
+ sendMailQuery = "Select name from subscriptions " + "where product_id= '" + product
+ .getmProductId() + "' " + "and send_mail=1 ";
+ System.out.println("loadQuery set");
+ }
+
+ public List getMailReciverList(Product product) throws Exception {
+ setLoadQuery(product);
+ return DBUtil.query(this.sendMailQuery);
+ }
+
+}
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
deleted file mode 100644
index 94bfcbaf54..0000000000
--- a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
+++ /dev/null
@@ -1,199 +0,0 @@
-package com.coderising.ood.srp;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-
-public class PromotionMail {
-
-
- protected String sendMailQuery = null;
-
-
- protected String smtpHost = null;
- protected String altSmtpHost = null;
- protected String fromAddress = null;
- protected String toAddress = null;
- protected String subject = null;
- protected String message = null;
-
- protected String productID = null;
- protected String productDesc = null;
-
- private static Configuration config;
-
-
-
- private static final String NAME_KEY = "NAME";
- private static final String EMAIL_KEY = "EMAIL";
-
-
- public static void main(String[] args) throws Exception {
-
- File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
- boolean emailDebug = false;
-
- PromotionMail pe = new PromotionMail(f, emailDebug);
-
- }
-
-
- public PromotionMail(File file, boolean mailDebug) throws Exception {
-
- //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
- readFile(file);
-
-
- config = new Configuration();
-
- setSMTPHost();
- setAltSMTPHost();
-
-
- setFromAddress();
-
-
- setLoadQuery();
-
- sendEMails(mailDebug, loadMailingList());
-
-
- }
-
-
-
-
- protected void setProductID(String productID)
- {
- this.productID = productID;
-
- }
-
- protected String getproductID()
- {
- return productID;
- }
-
- protected void setLoadQuery() throws Exception {
-
- sendMailQuery = "Select name from subscriptions "
- + "where product_id= '" + productID +"' "
- + "and send_mail=1 ";
-
-
- System.out.println("loadQuery set");
- }
-
-
- protected void setSMTPHost()
- {
- smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
- }
-
-
- protected void setAltSMTPHost()
- {
- altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
-
- }
-
-
- protected void setFromAddress()
- {
- fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
- }
-
- protected void setMessage(HashMap userInfo) throws IOException
- {
-
- String name = (String) userInfo.get(NAME_KEY);
-
- subject = "您关注的产品降价了";
- message = "尊敬的 "+name+", 您关注的产品 " + productDesc + " 降价了,欢迎购买!" ;
-
-
-
- }
-
-
- protected void readFile(File file) throws IOException // @02C
- {
- BufferedReader br = null;
- try {
- br = new BufferedReader(new FileReader(file));
- String temp = br.readLine();
- String[] data = temp.split(" ");
-
- setProductID(data[0]);
- setProductDesc(data[1]);
-
- System.out.println("产品ID = " + productID + "\n");
- System.out.println("产品描述 = " + productDesc + "\n");
-
- } catch (IOException e) {
- throw new IOException(e.getMessage());
- } finally {
- br.close();
- }
- }
-
- private void setProductDesc(String desc) {
- this.productDesc = desc;
- }
-
-
- protected void configureEMail(HashMap userInfo) throws IOException
- {
- toAddress = (String) userInfo.get(EMAIL_KEY);
- if (toAddress.length() > 0)
- setMessage(userInfo);
- }
-
- protected List loadMailingList() throws Exception {
- return DBUtil.query(this.sendMailQuery);
- }
-
-
- protected void sendEMails(boolean debug, List mailingList) throws IOException
- {
-
- System.out.println("开始发送邮件");
-
-
- if (mailingList != null) {
- Iterator iter = mailingList.iterator();
- while (iter.hasNext()) {
- configureEMail((HashMap) iter.next());
- try
- {
- if (toAddress.length() > 0)
- MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
- }
- catch (Exception e)
- {
-
- try {
- MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
-
- } catch (Exception e2)
- {
- System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
- }
- }
- }
-
-
- }
-
- else {
- System.out.println("没有邮件发送");
-
- }
-
- }
-}
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/DBUtil.java
similarity index 89%
rename from students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
rename to students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/DBUtil.java
index 65383e4dba..9d33edbd40 100644
--- a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/DBUtil.java
@@ -1,4 +1,4 @@
-package com.coderising.ood.srp;
+package com.coderising.ood.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/FileUtil.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/FileUtil.java
new file mode 100644
index 0000000000..c57721fa6e
--- /dev/null
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/FileUtil.java
@@ -0,0 +1,39 @@
+
+package com.coderising.ood.util;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+import com.coderising.ood.model.Product;
+
+/**
+ * @author 作者 E-mail:
+ * @version 创建时间:2017年6月17日 下午9:39:03
+ * 类说明
+ */
+public class FileUtil {
+
+ public static Product readProductFile(File file) throws IOException
+ {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+ Product product=new Product();
+ product.setmProductId(data[0]);
+ product.setmProductDesc(data[1]);
+ return product;
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ if(br!=null){
+ br.close();
+ }
+ }
+ }
+
+}
+
\ No newline at end of file
diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/MailUtil.java
similarity index 91%
rename from students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
rename to students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/MailUtil.java
index 373f3ee306..913f83aba9 100644
--- a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
+++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/MailUtil.java
@@ -1,4 +1,4 @@
-package com.coderising.ood.srp;
+package com.coderising.ood.util;
public class MailUtil {
From b82b6b49a39dbd1aaf50d216b0f3309a3d23710a Mon Sep 17 00:00:00 2001
From: boxin
Date: Mon, 19 Jun 2017 15:10:54 +0800
Subject: [PATCH 03/25] SRP 1.0-version
---
.../com/coderising/ood/srp/Configuration.java | 23 +++++++
.../coderising/ood/srp/ConfigurationKeys.java | 9 +++
.../com/coderising/ood/srp/MailContent.java | 69 +++++++++++++++++++
.../com/coderising/ood/srp/PromotionMail.java | 62 +++++++++++++++++
.../coderising/ood/srp/bean/ProductInfo.java | 33 +++++++++
.../com/coderising/ood/srp/bean/UserInfo.java | 28 ++++++++
.../ood/srp/dao/ProductInfoDAO.java | 48 +++++++++++++
.../coderising/ood/srp/dao/UserInfoDAO.java | 58 ++++++++++++++++
.../coderising/ood/srp/product_promotion.txt | 4 ++
.../com/coderising/ood/srp/test/MainTest.java | 60 ++++++++++++++++
.../com/coderising/ood/srp/util/DBUtil.java | 25 +++++++
.../com/coderising/ood/srp/util/MailUtil.java | 18 +++++
12 files changed, 437 insertions(+)
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailContent.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/bean/ProductInfo.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/bean/UserInfo.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/dao/ProductInfoDAO.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/dao/UserInfoDAO.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/test/MainTest.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
new file mode 100644
index 0000000000..f328c1816a
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/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/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..8695aed644
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/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/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailContent.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailContent.java
new file mode 100644
index 0000000000..fbc4702737
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailContent.java
@@ -0,0 +1,69 @@
+package com.coderising.ood.srp;
+
+/**
+ * Created by wang on 2017/6/17.
+ */
+public class MailContent {
+
+ private Configuration config = new Configuration();
+
+ private String smtpHost;
+
+ private String altSmtpHost;
+
+ private String fromAddress;
+
+ private String subject;
+
+ private String message;
+
+ public void setMailContent(String uName, String productDesc) {
+ setSMTPHost();
+ setAltSMTPHost();
+ setFromAddress();
+ setMessage(uName,productDesc);
+ }
+
+ public String getSmtpHost() {
+ return smtpHost;
+ }
+
+ public String getAltSmtpHost() {
+ return altSmtpHost;
+ }
+
+ public String getFromAddress() {
+ return fromAddress;
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ private void setSMTPHost() {
+ smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+
+ }
+
+ private void setAltSMTPHost() {
+ altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+ }
+
+
+ private void setFromAddress() {
+ fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+
+ public void setMessage(String uName, String productDesc){
+
+
+ subject = "您关注的产品降价了";
+ message = "尊敬的 "+uName+", 您关注的产品 " + productDesc + " 降价了,欢迎购买!" ;
+
+ }
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..2c8c71cfc6
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -0,0 +1,62 @@
+package com.coderising.ood.srp;
+
+import com.coderising.ood.srp.util.MailUtil;
+import com.coderising.ood.srp.bean.ProductInfo;
+import com.coderising.ood.srp.bean.UserInfo;
+
+import java.util.List;
+
+/**
+ * Created by wang on 2017/6/17.
+ */
+
+/**
+ * 发送邮件类
+ */
+public class PromotionMail {
+
+ private List proInfo;
+ private List userInfo;
+ private MailContent mailContent;
+
+ public PromotionMail(){
+
+ }
+
+
+
+ public PromotionMail(List proInfo, List userInfo, MailContent mailContent) {
+ this.proInfo = proInfo;
+ this.userInfo = userInfo;
+ this.mailContent = mailContent;
+ }
+
+ public void sendEMail(){
+
+ sendEMail(false);
+
+ }
+
+ public void sendEMail(boolean debug){
+ String productDesc = proInfo.get(0).getProductDesc();
+
+
+ System.out.println("开始发送邮件:");
+ for(UserInfo u : userInfo) {
+
+ String name = u.getName();
+ String toAddress = u.getEmail();
+
+ mailContent.setMailContent(name,productDesc);
+
+ String fromAddress = mailContent.getFromAddress();
+ String subject = mailContent.getSubject();
+ String message = mailContent.getMessage();
+ String smtpHost = mailContent.getSmtpHost();
+
+
+ MailUtil.sendEmail(toAddress,fromAddress,subject,message,smtpHost,debug);
+ }
+ System.out.println("邮件发送完毕!");
+ }
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/bean/ProductInfo.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/bean/ProductInfo.java
new file mode 100644
index 0000000000..1d18216e7c
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/bean/ProductInfo.java
@@ -0,0 +1,33 @@
+package com.coderising.ood.srp.bean;
+
+/**
+ * Created by wang on 2017/6/17.
+ */
+
+/**
+ * 产品信息
+ */
+public class ProductInfo {
+
+ private String ProductID;
+ private String ProductDesc;
+
+ public String getProductID() {
+ return ProductID;
+ }
+
+ public String getProductDesc() {
+ return ProductDesc;
+ }
+
+ public void setProductID(String productID) {
+ ProductID = productID;
+ }
+
+ public void setProductDesc(String productDesc) {
+ ProductDesc = productDesc;
+ }
+
+
+
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/bean/UserInfo.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/bean/UserInfo.java
new file mode 100644
index 0000000000..d8966fa49d
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/bean/UserInfo.java
@@ -0,0 +1,28 @@
+package com.coderising.ood.srp.bean;
+
+/**用户信息类
+ * Created by wang on 2017/6/17.
+ */
+
+
+public class UserInfo {
+
+ private String name;
+ private String email;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/dao/ProductInfoDAO.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/dao/ProductInfoDAO.java
new file mode 100644
index 0000000000..fd4cbcf6d0
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/dao/ProductInfoDAO.java
@@ -0,0 +1,48 @@
+package com.coderising.ood.srp.dao;
+
+import com.coderising.ood.srp.bean.ProductInfo;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.List;
+
+/**产品信息数据访问类
+ * Created by wang on 2017/6/17.
+ */
+public class ProductInfoDAO {
+
+ private List productList = new ArrayList<>();
+
+
+ public void readFile(File file) {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String newLine = br.readLine();
+
+ while(newLine!=null && newLine!=" ") {
+ String temp = newLine;
+ String[] datas = temp.split(" ");
+
+ addProductInfo(datas);
+ newLine = br.readLine();
+ }
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void addProductInfo(String[] datas) {
+
+ ProductInfo product = new ProductInfo();
+ product.setProductID(datas[0]);
+ product.setProductDesc(datas[1]);
+ this.productList.add(product);
+ }
+
+ public List getProductList(){
+ return this.productList;
+ }
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/dao/UserInfoDAO.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/dao/UserInfoDAO.java
new file mode 100644
index 0000000000..30293b62b6
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/dao/UserInfoDAO.java
@@ -0,0 +1,58 @@
+package com.coderising.ood.srp.dao;
+
+import com.coderising.ood.srp.util.DBUtil;
+import com.coderising.ood.srp.bean.UserInfo;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * Created by wang on 2017/6/17.
+ */
+public class UserInfoDAO {
+
+ private String sendMailQuery;
+
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+ private List infos = new ArrayList<>();
+
+ public UserInfoDAO() {}
+
+
+ /**
+ * 查询用户信息,封装UserInfo对象 然后返回 List
+ * @param productID
+ * @return
+ */
+ public List queryUserInfo(String productID){
+
+ sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + productID +"' "
+ + "and send_mail=1 ";
+
+
+ System.out.println("loadQuery set");
+ return getUserInfos();
+ }
+
+
+ private List loadMailingList(){
+ return DBUtil.query(sendMailQuery);
+ }
+
+ private List getUserInfos(){
+ List datas = this.loadMailingList();
+
+ for (HashMap users: datas) {
+ UserInfo u = new UserInfo();
+ u.setName(users.get(NAME_KEY));
+ u.setEmail(users.get(EMAIL_KEY));
+ infos.add(u);
+ }
+ return infos;
+ }
+
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/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
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/test/MainTest.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/test/MainTest.java
new file mode 100644
index 0000000000..9418141f28
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/test/MainTest.java
@@ -0,0 +1,60 @@
+package com.coderising.ood.srp.test;
+
+import com.coderising.ood.srp.*;
+import com.coderising.ood.srp.bean.ProductInfo;
+import com.coderising.ood.srp.bean.UserInfo;
+import com.coderising.ood.srp.dao.ProductInfoDAO;
+import com.coderising.ood.srp.dao.UserInfoDAO;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ * Created by wang on 2017/6/17.
+ */
+public class MainTest {
+
+ @Test
+ public void readFile() {
+ File f = new File("C:\\Users\\wang\\Documents\\ood\\coding2017\\students\\349184132\\ood\\ood-assignment\\src\\main\\java\\com\\coderising\\ood\\srp\\product_promotion.txt");
+ ProductInfoDAO pDAO = new ProductInfoDAO();
+ pDAO.readFile(f);
+ Assert.assertEquals("P8756", pDAO.getProductList().get(0).getProductID());
+ Assert.assertEquals("iPhone8", pDAO.getProductList().get(0).getProductDesc());
+
+ Assert.assertEquals("P4955", pDAO.getProductList().get(3).getProductID());
+ }
+
+ @Test
+ public void showUserInfo(){
+ File f = new File("C:\\Users\\wang\\Documents\\ood\\coding2017\\students\\349184132\\ood\\ood-assignment\\src\\main\\java\\com\\coderising\\ood\\srp\\product_promotion.txt");
+ ProductInfoDAO pDAO = new ProductInfoDAO();
+ pDAO.readFile(f);
+
+ List pInfo = pDAO.getProductList();
+
+ UserInfoDAO uDAO = new UserInfoDAO();
+ List userInfos = uDAO.queryUserInfo(pInfo.get(0).getProductID());
+ Assert.assertEquals("User1",userInfos.get(0).getName());
+
+ }
+
+ @Test
+ public void mailInfo(){
+ File f = new File("C:\\Users\\wang\\Documents\\ood\\coding2017\\students\\349184132\\ood\\ood-assignment\\src\\main\\java\\com\\coderising\\ood\\srp\\product_promotion.txt");
+ ProductInfoDAO pDAO = new ProductInfoDAO();
+ pDAO.readFile(f);
+
+ List pInfo = pDAO.getProductList();
+
+ UserInfoDAO uDAO = new UserInfoDAO();
+ List userInfos = uDAO.queryUserInfo(pInfo.get(0).getProductID());
+
+ MailContent mCont = new MailContent();
+ PromotionMail pMail = new PromotionMail(pInfo,userInfos,mCont);
+ pMail.sendEMail();
+ }
+
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java
new file mode 100644
index 0000000000..a23198fcea
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java
@@ -0,0 +1,25 @@
+package com.coderising.ood.srp.util;
+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/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
new file mode 100644
index 0000000000..bb028c690c
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
@@ -0,0 +1,18 @@
+package com.coderising.ood.srp.util;
+
+public class MailUtil {
+
+ public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
+ boolean debug) {
+ //假装发了一封邮件
+ 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());
+
+ }
+
+
+}
From 9b47297d238690620d834bedbe17fe95e9e8a521 Mon Sep 17 00:00:00 2001
From: boxin
Date: Mon, 19 Jun 2017 15:21:27 +0800
Subject: [PATCH 04/25] srp 349184132
---
students/349184132/ood/ood-assignment/pom.xml | 44 ++++
.../src/main/java/srp/Configuration.java | 23 +++
.../src/main/java/srp/ConfigurationKeys.java | 9 +
.../src/main/java/srp/DBUtil.java | 25 +++
.../src/main/java/srp/MailUtil.java | 18 ++
.../src/main/java/srp/PromotionMail.java | 192 ++++++++++++++++++
.../src/main/java/srp/product_promotion.txt | 4 +
7 files changed, 315 insertions(+)
create mode 100644 students/349184132/ood/ood-assignment/pom.xml
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/srp/Configuration.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/srp/ConfigurationKeys.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/srp/DBUtil.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/srp/MailUtil.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/srp/PromotionMail.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/srp/product_promotion.txt
diff --git a/students/349184132/ood/ood-assignment/pom.xml b/students/349184132/ood/ood-assignment/pom.xml
new file mode 100644
index 0000000000..e5f19f00ee
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/pom.xml
@@ -0,0 +1,44 @@
+
+ 4.0.0
+
+ com.coderising
+ ood-assignment
+ 0.0.1-SNAPSHOT
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.7
+ 1.7
+
+
+
+
+ jar
+
+ ood-assignment
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+
+ junit
+ junit
+ 4.12
+
+
+
+
+
+ aliyunmaven
+ http://maven.aliyun.com/nexus/content/groups/public/
+
+
+
diff --git a/students/349184132/ood/ood-assignment/src/main/java/srp/Configuration.java b/students/349184132/ood/ood-assignment/src/main/java/srp/Configuration.java
new file mode 100644
index 0000000000..3a17cdd457
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/srp/Configuration.java
@@ -0,0 +1,23 @@
+package 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/349184132/ood/ood-assignment/src/main/java/srp/ConfigurationKeys.java b/students/349184132/ood/ood-assignment/src/main/java/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..ef3a07a354
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/srp/ConfigurationKeys.java
@@ -0,0 +1,9 @@
+package 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/349184132/ood/ood-assignment/src/main/java/srp/DBUtil.java b/students/349184132/ood/ood-assignment/src/main/java/srp/DBUtil.java
new file mode 100644
index 0000000000..912bebf080
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/srp/DBUtil.java
@@ -0,0 +1,25 @@
+package 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/349184132/ood/ood-assignment/src/main/java/srp/MailUtil.java b/students/349184132/ood/ood-assignment/src/main/java/srp/MailUtil.java
new file mode 100644
index 0000000000..556976f5c9
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/srp/MailUtil.java
@@ -0,0 +1,18 @@
+package srp;
+
+public class MailUtil {
+
+ public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
+ boolean debug) {
+ //假装发了一封邮件
+ 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());
+
+ }
+
+
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/srp/PromotionMail.java b/students/349184132/ood/ood-assignment/src/main/java/srp/PromotionMail.java
new file mode 100644
index 0000000000..19aae203dc
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/srp/PromotionMail.java
@@ -0,0 +1,192 @@
+package srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+public class PromotionMail {
+
+
+ protected String sendMailQuery = null;
+
+
+ protected String smtpHost = null;
+ protected String altSmtpHost = null;
+ protected String fromAddress = null;
+ protected String toAddress = null;
+ protected String subject = null;
+ protected String message = null;
+
+ protected String productID = null;
+ protected String productDesc = null;
+
+ private static Configuration config;
+
+
+
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+
+ public static void main(String[] args) throws Exception {
+
+ File f = new File("C:\\Users\\wang\\Documents\\ood\\coding2017\\students\\349184132\\ood\\ood-assignment\\src\\main\\java\\com\\coderising\\ood\\srp\\product_promotion.txt");
+ boolean emailDebug = false;
+
+ PromotionMail pe = new PromotionMail(f, emailDebug);
+
+ }
+
+
+ public PromotionMail(File file, boolean mailDebug) throws Exception {
+
+ //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
+ readFile(file); // 读取产品信息
+
+
+ config = new Configuration(); // 封装的邮件地址
+
+
+ setSMTPHost(); // 通过Config 对象来设置 host
+ setAltSMTPHost(); // 设置备用host // 不应该暴露出来 封装在 setSMTPHost 中
+
+
+ setFromAddress(); // 设置 源地址
+
+
+ setLoadQuery(); // 向数据库中查询 目标地址
+
+ sendEMails(mailDebug, loadMailingList()); // 发送邮件
+
+
+ }
+
+
+
+
+ protected void setProductID(String productID)
+ {
+ this.productID = productID;
+
+ }
+
+ protected String getproductID()
+ {
+ return productID;
+ }
+
+ protected void setLoadQuery() throws Exception {
+
+ sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + productID +"' "
+ + "and send_mail=1 ";
+
+
+ System.out.println("loadQuery set");
+ }
+
+
+ protected void setSMTPHost()
+ {
+ smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ }
+
+
+ protected void setAltSMTPHost()
+ {
+ altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+
+ }
+
+
+ protected void setFromAddress()
+ {
+ fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+ protected void setMessage(HashMap userInfo) throws IOException
+ {
+
+ String name = (String) userInfo.get(NAME_KEY);
+
+ subject = "您关注的产品降价了";
+ message = "尊敬的 "+name+", 您关注的产品 " + productDesc + " 降价了,欢迎购买!" ;
+
+
+
+ }
+
+
+ protected void readFile(File file) throws IOException // @02C
+ {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+
+ setProductID(data[0]);
+ setProductDesc(data[1]);
+
+ System.out.println("产品ID = " + productID + "\n");
+ System.out.println("产品描述 = " + productDesc + "\n");
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ }
+
+ private void setProductDesc(String desc) {
+ this.productDesc = desc;
+ }
+
+
+ protected void configureEMail(HashMap userInfo) throws IOException
+ {
+ toAddress = (String) userInfo.get(EMAIL_KEY);
+ if (toAddress.length() > 0)
+ setMessage(userInfo);
+ }
+
+ protected List loadMailingList() throws Exception {
+ return DBUtil.query(this.sendMailQuery);
+ }
+
+
+ protected void sendEMails(boolean debug, List mailingList) throws IOException
+ {
+
+ System.out.println("开始发送邮件");
+
+
+ if (mailingList == null) {
+ System.out.println("没有邮件发送");
+ }else {
+
+ Iterator iter = mailingList.iterator();
+ while (iter.hasNext()) {
+ configureEMail((HashMap) iter.next());
+ try {
+ if (toAddress.length() > 0)
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
+ } catch (Exception e) {
+
+ try {
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
+
+ } catch (Exception e2) {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+ }
+ }
+ }
+ }
+
+
+ }
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/srp/product_promotion.txt b/students/349184132/ood/ood-assignment/src/main/java/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/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 ce13e90b2e9b6c9ae834cb31708ec9e429a659a3 Mon Sep 17 00:00:00 2001
From: boxin
Date: Mon, 19 Jun 2017 22:52:01 +0800
Subject: [PATCH 05/25] SRP 2.0-version
---
.../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 +++++
.../com/coderising/ood/srp/MailContent.java | 13 ++-----
.../com/coderising/ood/srp/PromotionMail.java | 22 ++++++++---
.../com/coderising/ood/srp/test/MainTest.java | 6 +--
.../com/coderising/ood/srp/util/MailUtil.java | 17 ++++++++-
8 files changed, 108 insertions(+), 18 deletions(-)
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/DateUtil.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/MailUtil.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/SMSUtil.java
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/DateUtil.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/DateUtil.java
new file mode 100644
index 0000000000..b6cf28c096
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/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/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java
new file mode 100644
index 0000000000..0357c4d912
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/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/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/MailUtil.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/MailUtil.java
new file mode 100644
index 0000000000..ec54b839c5
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/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/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/SMSUtil.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/SMSUtil.java
new file mode 100644
index 0000000000..13cf802418
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/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/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailContent.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailContent.java
index fbc4702737..ebc3788355 100644
--- a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailContent.java
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailContent.java
@@ -17,12 +17,7 @@ public class MailContent {
private String message;
- public void setMailContent(String uName, String productDesc) {
- setSMTPHost();
- setAltSMTPHost();
- setFromAddress();
- setMessage(uName,productDesc);
- }
+
public String getSmtpHost() {
return smtpHost;
@@ -44,17 +39,17 @@ public String getMessage() {
return message;
}
- private void setSMTPHost() {
+ public void setSMTPHost() {
smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
}
- private void setAltSMTPHost() {
+ public void setAltSMTPHost() {
altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
}
- private void setFromAddress() {
+ public void setFromAddress() {
fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
index 2c8c71cfc6..75a52080ad 100644
--- a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -1,8 +1,8 @@
package com.coderising.ood.srp;
-import com.coderising.ood.srp.util.MailUtil;
import com.coderising.ood.srp.bean.ProductInfo;
import com.coderising.ood.srp.bean.UserInfo;
+import com.coderising.ood.srp.util.MailUtil;
import java.util.List;
@@ -38,25 +38,37 @@ public void sendEMail(){
}
public void sendEMail(boolean debug){
- String productDesc = proInfo.get(0).getProductDesc();
+ String productDesc = proInfo.get(0).getProductDesc();
System.out.println("开始发送邮件:");
for(UserInfo u : userInfo) {
String name = u.getName();
- String toAddress = u.getEmail();
- mailContent.setMailContent(name,productDesc);
+ setEmailContent(productDesc, name);
+ String toAddress = u.getEmail();
String fromAddress = mailContent.getFromAddress();
String subject = mailContent.getSubject();
String message = mailContent.getMessage();
String smtpHost = mailContent.getSmtpHost();
+ String altSmtpHost = mailContent.getAltSmtpHost();
+ if(message == "" && message == null){
+ return ;
+ }
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, altSmtpHost, debug);
- MailUtil.sendEmail(toAddress,fromAddress,subject,message,smtpHost,debug);
}
System.out.println("邮件发送完毕!");
}
+
+ private void setEmailContent(String productDesc, String name) {
+ mailContent.setFromAddress();
+ mailContent.setSMTPHost();
+ mailContent.setAltSMTPHost();
+ mailContent.setMessage(name,productDesc);
+ }
+
}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/test/MainTest.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/test/MainTest.java
index 9418141f28..e70cdbe80a 100644
--- a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/test/MainTest.java
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/test/MainTest.java
@@ -17,7 +17,7 @@
public class MainTest {
@Test
- public void readFile() {
+ public void testReadFile() {
File f = new File("C:\\Users\\wang\\Documents\\ood\\coding2017\\students\\349184132\\ood\\ood-assignment\\src\\main\\java\\com\\coderising\\ood\\srp\\product_promotion.txt");
ProductInfoDAO pDAO = new ProductInfoDAO();
pDAO.readFile(f);
@@ -28,7 +28,7 @@ public void readFile() {
}
@Test
- public void showUserInfo(){
+ public void testUserInfo(){
File f = new File("C:\\Users\\wang\\Documents\\ood\\coding2017\\students\\349184132\\ood\\ood-assignment\\src\\main\\java\\com\\coderising\\ood\\srp\\product_promotion.txt");
ProductInfoDAO pDAO = new ProductInfoDAO();
pDAO.readFile(f);
@@ -42,7 +42,7 @@ public void showUserInfo(){
}
@Test
- public void mailInfo(){
+ public void testSendMail(){
File f = new File("C:\\Users\\wang\\Documents\\ood\\coding2017\\students\\349184132\\ood\\ood-assignment\\src\\main\\java\\com\\coderising\\ood\\srp\\product_promotion.txt");
ProductInfoDAO pDAO = new ProductInfoDAO();
pDAO.readFile(f);
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
index bb028c690c..bd8dcba4f2 100644
--- a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
@@ -2,6 +2,9 @@
public class MailUtil {
+
+
+
public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
boolean debug) {
//假装发了一封邮件
@@ -11,7 +14,19 @@ public static void sendEmail(String toAddress, String fromAddress, String subjec
buffer.append("Subject:").append(subject).append("\n");
buffer.append("Content:").append(message).append("\n");
System.out.println(buffer.toString());
-
+
+ }
+
+ public static void sendEmail(String toAddress, String fromAddress, String subjuect, String message, String smtpHost, String altSmtpHost, boolean debug){
+ try{
+ sendEmail(toAddress, fromAddress, subjuect, message, smtpHost, debug);
+ }catch (Exception e){
+ try{
+ sendEmail(toAddress, fromAddress, subjuect, message, altSmtpHost ,debug);
+ }catch (Exception e1){
+ System.out.println("发送邮件失败!");
+ }
+ }
}
From 8c21a20f5c498c65e34478d250cabb7a51a5670d Mon Sep 17 00:00:00 2001
From: palmshe
Date: Mon, 19 Jun 2017 23:00:59 +0800
Subject: [PATCH 06/25] =?UTF-8?q?OCP=E7=BB=83=E4=B9=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/coderising/ood/ocp/Logger.java | 28 +++++++++++++++++++
.../java/com/coderising/ood/ocp/Main.java | 11 ++++----
.../ood/ocp/formatter/DateUtil.java | 20 +++++++++++++
.../ood/ocp/formatter/LogFormatter.java | 15 ++++++++++
.../ood/ocp/handler/LogHandler.java | 17 +++++++++++
.../coderising/ood/ocp/handler/MailUtil.java | 9 ++++++
.../coderising/ood/ocp/handler/PrintUtil.java | 21 ++++++++++++++
.../coderising/ood/ocp/handler/SMSUtil.java | 9 ++++++
8 files changed, 124 insertions(+), 6 deletions(-)
create mode 100644 students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java
create mode 100644 students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/formatter/DateUtil.java
create mode 100644 students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/formatter/LogFormatter.java
create mode 100644 students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/LogHandler.java
create mode 100644 students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/MailUtil.java
create mode 100644 students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/PrintUtil.java
create mode 100644 students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/SMSUtil.java
diff --git a/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java
new file mode 100644
index 0000000000..9a4cbb0f0c
--- /dev/null
+++ b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java
@@ -0,0 +1,28 @@
+/**
+ * 版权 (c) 2017 palmshe.com
+ * 保留所有权利。
+ */
+package com.coderising.ood.ocp;
+
+import com.coderising.ood.ocp.formatter.LogFormatter;
+import com.coderising.ood.ocp.handler.LogHandler;
+
+/**
+ * @Description:
+ * @author palmshe
+ * @date 2017年6月19日 下午9:10:02
+ */
+public class Logger {
+
+ private LogHandler logHandler;
+ private LogFormatter logFormatter;
+
+ public Logger(LogHandler handler, LogFormatter formatter){
+ this.logHandler= handler;
+ this.logFormatter= formatter;
+ }
+
+ public void log(String msg){
+ this.logHandler.handleLog(this.logFormatter.formatMsg(msg));
+ }
+}
diff --git a/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/Main.java b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/Main.java
index 1523ce8e35..9a072602b0 100644
--- a/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/Main.java
+++ b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/Main.java
@@ -4,12 +4,11 @@
*/
package com.coderising.ood.ocp;
-import com.coderising.ood.ocp.log.Logger;
-import com.coderising.ood.ocp.log.formatter.DateUtil;
-import com.coderising.ood.ocp.log.formatter.LogFormatter;
-import com.coderising.ood.ocp.log.handler.LogHandler;
-import com.coderising.ood.ocp.log.handler.MailUtil;
-import com.coderising.ood.ocp.log.handler.SMSUtil;
+import com.coderising.ood.ocp.formatter.DateUtil;
+import com.coderising.ood.ocp.formatter.LogFormatter;
+import com.coderising.ood.ocp.handler.LogHandler;
+import com.coderising.ood.ocp.handler.MailUtil;
+import com.coderising.ood.ocp.handler.SMSUtil;
/**
* @Description:
diff --git a/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/formatter/DateUtil.java b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/formatter/DateUtil.java
new file mode 100644
index 0000000000..7b45fd15dd
--- /dev/null
+++ b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/formatter/DateUtil.java
@@ -0,0 +1,20 @@
+package com.coderising.ood.ocp.formatter;
+
+import java.util.Date;
+
+public class DateUtil implements LogFormatter{
+
+ private String getCurrentDateAsString() {
+
+ return "current date: "+ new Date();
+ }
+
+ /* (non-Javadoc)
+ * @see com.coderising.ood.ocp.LogFormatter#formatMsg(java.lang.String)
+ */
+ @Override
+ public String formatMsg(String msg) {
+ return getCurrentDateAsString()+ ", "+ msg;
+ }
+
+}
diff --git a/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/formatter/LogFormatter.java b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/formatter/LogFormatter.java
new file mode 100644
index 0000000000..0be87702f2
--- /dev/null
+++ b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/formatter/LogFormatter.java
@@ -0,0 +1,15 @@
+/**
+ * 版权 (c) 2017 palmshe.com
+ * 保留所有权利。
+ */
+package com.coderising.ood.ocp.formatter;
+
+/**
+ * @Description:
+ * @author palmshe
+ * @date 2017年6月19日 下午9:07:00
+ */
+public interface LogFormatter {
+
+ String formatMsg(String msg);
+}
diff --git a/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/LogHandler.java b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/LogHandler.java
new file mode 100644
index 0000000000..e86cebba24
--- /dev/null
+++ b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/LogHandler.java
@@ -0,0 +1,17 @@
+/**
+ * 版权 (c) 2017 palmshe.com
+ * 保留所有权利。
+ */
+package com.coderising.ood.ocp.handler;
+
+import java.io.Serializable;
+
+/**
+ * @Description:
+ * @author palmshe
+ * @date 2017年6月19日 下午9:08:04
+ */
+public interface LogHandler extends Serializable{
+
+ void handleLog(String msg);
+}
diff --git a/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/MailUtil.java b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/MailUtil.java
new file mode 100644
index 0000000000..e9fb2d90da
--- /dev/null
+++ b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/MailUtil.java
@@ -0,0 +1,9 @@
+package com.coderising.ood.ocp.handler;
+
+public class MailUtil implements LogHandler{
+
+ public void handleLog(String logMsg) {
+ System.out.println("MailUtil handle, msg= "+ logMsg);
+ }
+
+}
diff --git a/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/PrintUtil.java b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/PrintUtil.java
new file mode 100644
index 0000000000..8f2ab2b697
--- /dev/null
+++ b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/PrintUtil.java
@@ -0,0 +1,21 @@
+/**
+ * 版权 (c) 2017 palmshe.com
+ * 保留所有权利。
+ */
+package com.coderising.ood.ocp.handler;
+
+/**
+ * @Description:
+ * @author palmshe
+ * @date 2017年6月19日 下午9:22:49
+ */
+public class PrintUtil implements LogHandler{
+
+ /* (non-Javadoc)
+ * @see com.coderising.ood.ocp.LogHandler#send(java.lang.String)
+ */
+ @Override
+ public void handleLog(String msg) {
+ System.out.println("PrintUtil handle, msg= "+ msg);
+ }
+}
diff --git a/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/SMSUtil.java b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/SMSUtil.java
new file mode 100644
index 0000000000..4bd916587d
--- /dev/null
+++ b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/handler/SMSUtil.java
@@ -0,0 +1,9 @@
+package com.coderising.ood.ocp.handler;
+
+public class SMSUtil implements LogHandler{
+
+ public void handleLog(String logMsg) {
+ System.out.println("SMSUtil handle, msg= "+ logMsg);
+ }
+
+}
From 62ed551bccd7a22910f83d2e585a788270b71a52 Mon Sep 17 00:00:00 2001
From: lanyuanxiaoyao
Date: Mon, 19 Jun 2017 23:33:58 +0800
Subject: [PATCH 07/25] 2017.6.19
---
.../ocp_restructure_1/LoggerUtil/Logger.java" | 25 +++++++++++++++++++
.../MsgUtil/BaseMsgTool.java" | 5 ++++
.../MsgUtil/HandleMsgWithDate.java" | 9 +++++++
.../MsgUtil/HandleMsgWithNone.java" | 7 ++++++
.../MsgUtil/IMsgHandle.java" | 7 ++++++
.../ocp_restructure_1/Util/DateUtil.java" | 7 ++++++
.../ocp_restructure_1/Util/MailUtil.java" | 7 ++++++
.../ocp_restructure_1/Util/SMSUtil.java" | 7 ++++++
...3\351\242\230\346\200\235\350\267\257.txt" | 1 +
9 files changed, 75 insertions(+)
create mode 100644 "students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/LoggerUtil/Logger.java"
create mode 100644 "students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/BaseMsgTool.java"
create mode 100644 "students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/HandleMsgWithDate.java"
create mode 100644 "students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/HandleMsgWithNone.java"
create mode 100644 "students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/IMsgHandle.java"
create mode 100644 "students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/DateUtil.java"
create mode 100644 "students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/MailUtil.java"
create mode 100644 "students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/SMSUtil.java"
create mode 100644 "students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/\350\247\243\351\242\230\346\200\235\350\267\257.txt"
diff --git "a/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/LoggerUtil/Logger.java" "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/LoggerUtil/Logger.java"
new file mode 100644
index 0000000000..63733b92e0
--- /dev/null
+++ "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/LoggerUtil/Logger.java"
@@ -0,0 +1,25 @@
+package com.coderising.ood.ocp.LoggerUtil;
+
+import com.coderising.ood.ocp.Log.BaseLog;
+import com.coderising.ood.ocp.Log.PrintLog;
+import com.coderising.ood.ocp.MsgUtil.BaseMsgTool;
+import com.coderising.ood.ocp.MsgUtil.HandleMsgWithNone;
+
+public class Logger {
+
+ private BaseMsgTool tool;
+ private BaseLog log;
+
+ public Logger(BaseMsgTool tool, BaseLog log) {
+ this.tool = tool;
+ this.log = log;
+ }
+
+ public void log(String msg) {
+ log.sendLog(tool.handleMsg(msg));
+ }
+
+ public static void main(String[] args) {
+ new Logger(new HandleMsgWithNone(), new PrintLog()).log("Hello world");
+ }
+}
diff --git "a/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/BaseMsgTool.java" "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/BaseMsgTool.java"
new file mode 100644
index 0000000000..412c02ba4b
--- /dev/null
+++ "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/BaseMsgTool.java"
@@ -0,0 +1,5 @@
+package com.coderising.ood.ocp.MsgUtil;
+
+public abstract class BaseMsgTool implements IMsgHandle{
+
+}
diff --git "a/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/HandleMsgWithDate.java" "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/HandleMsgWithDate.java"
new file mode 100644
index 0000000000..e3f6798d11
--- /dev/null
+++ "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/HandleMsgWithDate.java"
@@ -0,0 +1,9 @@
+package com.coderising.ood.ocp.MsgUtil;
+
+import com.coderising.ood.ocp.Util.DateUtil;
+
+public class HandleMsgWithDate extends BaseMsgTool {
+ public String handleMsg(String msg) {
+ return DateUtil.getCurrentDateAsString() + ": " + msg;
+ }
+}
diff --git "a/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/HandleMsgWithNone.java" "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/HandleMsgWithNone.java"
new file mode 100644
index 0000000000..ae1b936637
--- /dev/null
+++ "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/HandleMsgWithNone.java"
@@ -0,0 +1,7 @@
+package com.coderising.ood.ocp.MsgUtil;
+
+public class HandleMsgWithNone extends BaseMsgTool {
+ public String handleMsg(String msg) {
+ return msg;
+ }
+}
diff --git "a/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/IMsgHandle.java" "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/IMsgHandle.java"
new file mode 100644
index 0000000000..e72a6672ea
--- /dev/null
+++ "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/MsgUtil/IMsgHandle.java"
@@ -0,0 +1,7 @@
+package com.coderising.ood.ocp.MsgUtil;
+
+public interface IMsgHandle {
+
+ String handleMsg(String msg);
+
+}
diff --git "a/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/DateUtil.java" "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/DateUtil.java"
new file mode 100644
index 0000000000..26e947e622
--- /dev/null
+++ "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/DateUtil.java"
@@ -0,0 +1,7 @@
+package com.coderising.ood.ocp.Util;
+
+public class DateUtil {
+ public static String getCurrentDateAsString() {
+ return null;
+ }
+}
diff --git "a/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/MailUtil.java" "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/MailUtil.java"
new file mode 100644
index 0000000000..d857e8ef56
--- /dev/null
+++ "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/MailUtil.java"
@@ -0,0 +1,7 @@
+package com.coderising.ood.ocp.Util;
+
+public class MailUtil {
+ public static void send(String logMsg) {
+
+ }
+}
diff --git "a/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/SMSUtil.java" "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/SMSUtil.java"
new file mode 100644
index 0000000000..1affb5938d
--- /dev/null
+++ "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/Util/SMSUtil.java"
@@ -0,0 +1,7 @@
+package com.coderising.ood.ocp.Util;
+
+public class SMSUtil {
+ public static void send(String logMsg) {
+
+ }
+}
diff --git "a/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/\350\247\243\351\242\230\346\200\235\350\267\257.txt" "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/\350\247\243\351\242\230\346\200\235\350\267\257.txt"
new file mode 100644
index 0000000000..bd6d6a03ba
--- /dev/null
+++ "b/students/949603184/homework02-\351\207\215\346\236\204\346\227\245\345\277\227\346\211\223\345\215\260/ocp_restructure_1/\350\247\243\351\242\230\346\200\235\350\267\257.txt"
@@ -0,0 +1 @@
+http://lanyuanxiaoyao.com/2017/06/19/ocp-homework/
\ No newline at end of file
From 46f8aaec9e8fd061331a0fe2b6957a7261940c01 Mon Sep 17 00:00:00 2001
From: boxin
Date: Mon, 19 Jun 2017 23:42:20 +0800
Subject: [PATCH 08/25] OCP 1.0-version
---
.../java/com/coderising/ood/ocp/Logger.java | 38 -------------------
.../coderising/ood/ocp/logtype/LogType.java | 10 +++++
.../ood/ocp/logtype/MailLogTypeImp.java | 13 +++++++
.../ood/ocp/logtype/PrintLogTypeImp.java | 13 +++++++
.../ood/ocp/logtype/SmsLogTypeImp.java | 11 ++++++
.../com/coderising/ood/ocp/newb/Logger.java | 27 +++++++++++++
.../ood/ocp/{ => util}/DateUtil.java | 2 +-
.../ood/ocp/{ => util}/MailUtil.java | 2 +-
.../ood/ocp/{ => util}/SMSUtil.java | 2 +-
9 files changed, 77 insertions(+), 41 deletions(-)
delete mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/LogType.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/MailLogTypeImp.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/PrintLogTypeImp.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/SmsLogTypeImp.java
create mode 100644 students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/newb/Logger.java
rename students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/{ => util}/DateUtil.java (72%)
rename students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/{ => util}/MailUtil.java (75%)
rename students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/{ => util}/SMSUtil.java (75%)
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java
deleted file mode 100644
index 0357c4d912..0000000000
--- a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/Logger.java
+++ /dev/null
@@ -1,38 +0,0 @@
-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/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/LogType.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/LogType.java
new file mode 100644
index 0000000000..e776ffaf22
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/LogType.java
@@ -0,0 +1,10 @@
+package com.coderising.ood.ocp.logtype;
+
+/**
+ * Created by wang on 2017/6/19.
+ */
+public interface LogType {
+
+
+ void Send(String msglog);
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/MailLogTypeImp.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/MailLogTypeImp.java
new file mode 100644
index 0000000000..0252b9d911
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/MailLogTypeImp.java
@@ -0,0 +1,13 @@
+package com.coderising.ood.ocp.logtype;
+
+import com.coderising.ood.ocp.util.MailUtil;
+
+/**
+ * Created by wang on 2017/6/19.
+ */
+public class MailLogTypeImp implements LogType {
+ @Override
+ public void Send(String msglog) {
+ MailUtil.send(msglog);
+ }
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/PrintLogTypeImp.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/PrintLogTypeImp.java
new file mode 100644
index 0000000000..44f69f9d79
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/PrintLogTypeImp.java
@@ -0,0 +1,13 @@
+package com.coderising.ood.ocp.logtype;
+
+import com.coderising.ood.ocp.util.SMSUtil;
+
+/**
+ * Created by wang on 2017/6/19.
+ */
+public class PrintLogTypeImp implements LogType{
+ @Override
+ public void Send(String msglog) {
+ SMSUtil.send(msglog);
+ }
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/SmsLogTypeImp.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/SmsLogTypeImp.java
new file mode 100644
index 0000000000..2613a28f3f
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/logtype/SmsLogTypeImp.java
@@ -0,0 +1,11 @@
+package com.coderising.ood.ocp.logtype;
+
+/**
+ * Created by wang on 2017/6/19.
+ */
+public class SmsLogTypeImp implements LogType {
+ @Override
+ public void Send(String msglog) {
+ System.out.println(msglog);
+ }
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/newb/Logger.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/newb/Logger.java
new file mode 100644
index 0000000000..d444796597
--- /dev/null
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/newb/Logger.java
@@ -0,0 +1,27 @@
+package com.coderising.ood.ocp.newb;
+
+import com.coderising.ood.ocp.log.Log;
+import com.coderising.ood.ocp.logtype.LogType;
+
+/**
+ * Created by wang on 2017/6/19.
+ */
+public class Logger {
+
+ private Log log ;
+
+ private LogType logType;
+
+ public Logger(Log log, LogType logType) {
+ this.log = log;
+ this.logType = logType;
+ }
+
+ public void log(String msg){
+
+ String msglog = log.setMsgLog(msg);
+
+ logType.Send(msglog);
+
+ }
+}
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/DateUtil.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/DateUtil.java
similarity index 72%
rename from students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/DateUtil.java
rename to students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/DateUtil.java
index b6cf28c096..ca7b21a6dd 100644
--- a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/DateUtil.java
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/DateUtil.java
@@ -1,4 +1,4 @@
-package com.coderising.ood.ocp;
+package com.coderising.ood.ocp.util;
public class DateUtil {
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/MailUtil.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/MailUtil.java
similarity index 75%
rename from students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/MailUtil.java
rename to students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/MailUtil.java
index ec54b839c5..9191303993 100644
--- a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/MailUtil.java
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/MailUtil.java
@@ -1,4 +1,4 @@
-package com.coderising.ood.ocp;
+package com.coderising.ood.ocp.util;
public class MailUtil {
diff --git a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/SMSUtil.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java
similarity index 75%
rename from students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/SMSUtil.java
rename to students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java
index 13cf802418..9fab3d9430 100644
--- a/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/SMSUtil.java
+++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java
@@ -1,4 +1,4 @@
-package com.coderising.ood.ocp;
+package com.coderising.ood.ocp.util;
public class SMSUtil {
From 1e80f7c2611e1ae2c07b2105ba29d57ca6bd3ed0 Mon Sep 17 00:00:00 2001
From: Tony-Hu
Date: Mon, 19 Jun 2017 13:31:49 -0700
Subject: [PATCH 09/25] Submit for homework
---
liuxin/ood/ood-assignment/pom.xml | 7 +-
.../coderising/ood/srp/DO/ProductDetail.java | 26 +++
.../com/coderising/ood/srp/DO/UserInfo.java | 29 +++
.../com/coderising/ood/srp/PromotionMail.java | 218 +++---------------
.../com/coderising/ood/srp/util/DBUtil.java | 38 +++
.../com/coderising/ood/srp/util/FileUtil.java | 49 ++++
.../com/coderising/ood/srp/util/MailUtil.java | 97 ++++++++
liuxin/ood/ood-assignment/test.txt | 5 +
8 files changed, 281 insertions(+), 188 deletions(-)
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/ProductDetail.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/UserInfo.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/FileUtil.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
create mode 100644 liuxin/ood/ood-assignment/test.txt
diff --git a/liuxin/ood/ood-assignment/pom.xml b/liuxin/ood/ood-assignment/pom.xml
index cac49a5328..d1ed73a0bf 100644
--- a/liuxin/ood/ood-assignment/pom.xml
+++ b/liuxin/ood/ood-assignment/pom.xml
@@ -21,7 +21,12 @@
junit
4.12
-
+
+ org.jetbrains
+ annotations-java5
+ RELEASE
+
+
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/ProductDetail.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/ProductDetail.java
new file mode 100644
index 0000000000..7b3041a000
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/ProductDetail.java
@@ -0,0 +1,26 @@
+package com.coderising.ood.srp.DO;
+
+/**
+ * 产品信息数据类。
+ * @since 06.18.2017
+ */
+public class ProductDetail {
+ private String id;
+ private String description;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/UserInfo.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/UserInfo.java
new file mode 100644
index 0000000000..14eff3c68a
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/UserInfo.java
@@ -0,0 +1,29 @@
+package com.coderising.ood.srp.DO;
+
+/**
+ * 用户数据类。
+ * @since 06.18.2017
+ */
+public class UserInfo {
+ private String name;
+ private String email;
+ private String productDesc;
+
+ public UserInfo(String name, String email, String productDesc){
+ this.name = name;
+ this.email = email;
+ this.productDesc = productDesc;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public String getProductDesc() {
+ return productDesc;
+ }
+}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
index 781587a846..2ec66a4d47 100644
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -1,199 +1,43 @@
package com.coderising.ood.srp;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Iterator;
+import com.coderising.ood.srp.DO.ProductDetail;
+import com.coderising.ood.srp.DO.UserInfo;
+import com.coderising.ood.srp.util.DBUtil;
+import com.coderising.ood.srp.util.FileUtil;
+import com.coderising.ood.srp.util.MailUtil;
+
+import java.io.FileNotFoundException;
import java.util.List;
+/**
+ * 程序入口点。
+ * @since 06.19.2017
+ */
public class PromotionMail {
+ public static void main(String[] args){
+ final String FILE_PATH = "test.txt";
+ FileUtil fileUtil;
- protected String sendMailQuery = null;
-
-
- protected String smtpHost = null;
- protected String altSmtpHost = null;
- protected String fromAddress = null;
- protected String toAddress = null;
- protected String subject = null;
- protected String message = null;
-
- protected String productID = null;
- protected String productDesc = null;
-
- private static Configuration config;
-
-
-
- private static final String NAME_KEY = "NAME";
- private static final String EMAIL_KEY = "EMAIL";
-
-
- public static void main(String[] args) throws Exception {
-
- File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
- boolean emailDebug = false;
-
- PromotionMail pe = new PromotionMail(f, emailDebug);
-
- }
-
-
- public PromotionMail(File file, boolean mailDebug) throws Exception {
-
- //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
- readFile(file);
-
-
- config = new Configuration();
-
- setSMTPHost();
- setAltSMTPHost();
-
-
- setFromAddress();
-
-
- setLoadQuery();
-
- sendEMails(mailDebug, loadMailingList());
-
-
- }
-
-
-
-
- protected void setProductID(String productID)
- {
- this.productID = productID;
-
- }
-
- protected String getproductID()
- {
- return productID;
- }
-
- protected void setLoadQuery() throws Exception {
-
- sendMailQuery = "Select name from subscriptions "
- + "where product_id= '" + productID +"' "
- + "and send_mail=1 ";
-
-
- System.out.println("loadQuery set");
- }
-
-
- protected void setSMTPHost()
- {
- smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
- }
-
-
- protected void setAltSMTPHost()
- {
- altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
-
- }
-
-
- protected void setFromAddress()
- {
- fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
- }
-
- protected void setMessage(HashMap userInfo) throws IOException
- {
-
- String name = (String) userInfo.get(NAME_KEY);
-
- subject = "您关注的产品降价了";
- message = "尊敬的 "+name+", 您关注的产品 " + productDesc + " 降价了,欢迎购买!" ;
-
-
-
- }
-
-
- protected void readFile(File file) throws IOException // @02C
- {
- BufferedReader br = null;
- try {
- br = new BufferedReader(new FileReader(file));
- String temp = br.readLine();
- String[] data = temp.split(" ");
-
- setProductID(data[0]);
- setProductDesc(data[1]);
-
- System.out.println("产品ID = " + productID + "\n");
- System.out.println("产品描述 = " + productDesc + "\n");
-
- } catch (IOException e) {
- throw new IOException(e.getMessage());
- } finally {
- br.close();
- }
- }
-
- private void setProductDesc(String desc) {
- this.productDesc = desc;
- }
-
-
- protected void configureEMail(HashMap userInfo) throws IOException
- {
- toAddress = (String) userInfo.get(EMAIL_KEY);
- if (toAddress.length() > 0)
- setMessage(userInfo);
- }
-
- protected List loadMailingList() throws Exception {
- return DBUtil.query(this.sendMailQuery);
- }
-
-
- protected void sendEMails(boolean debug, List mailingList) throws IOException
- {
-
- System.out.println("开始发送邮件");
-
+ //尝试打开促销文件
+ try {
+ fileUtil = new FileUtil(FILE_PATH);
+ } catch (FileNotFoundException e){
+ System.out.println("促销文件打开失败,请确认文件路径!");
+ return;
+ }
- if (mailingList != null) {
- Iterator iter = mailingList.iterator();
- while (iter.hasNext()) {
- configureEMail((HashMap) iter.next());
- try
- {
- if (toAddress.length() > 0)
- MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
- }
- catch (Exception e)
- {
-
- try {
- MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
-
- } catch (Exception e2)
- {
- System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
- }
- }
- }
-
+ sendAllEMails(fileUtil);
- }
+ fileUtil.close();
+ }
- else {
- System.out.println("没有邮件发送");
-
- }
- }
+ private static void sendAllEMails(FileUtil fileUtil){
+ while (fileUtil.hasNext()) {
+ ProductDetail productDetail = fileUtil.getNextProduct();
+ List usersList = DBUtil.query(productDetail);
+ MailUtil.sendEmails(usersList);
+ }
+ }
}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java
new file mode 100644
index 0000000000..e1e0012855
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java
@@ -0,0 +1,38 @@
+package com.coderising.ood.srp.util;
+import com.coderising.ood.srp.DO.ProductDetail;
+import com.coderising.ood.srp.DO.UserInfo;
+
+import java.util.*;
+
+/**
+ * 数据库操作类。
+ * 管理数据库连接,查询等操作。
+ * @since 06.19.2017
+ */
+public class DBUtil {
+
+ //TODO 此处添加数据库连接信息
+
+
+ /**
+ * 应该从数据库读, 但是简化为直接生成。
+ * 给一个产品详情,返回一个Array List记载所有订阅该产品的用户信息(名字,邮箱,订阅的产品名称)。
+ * @param productDetail 传产品详情。产品id用来查询数据库。产品名称用于和用户信息绑定
+ * @return 返回数据库中所有的查询到的结果。
+ */
+ public static List query(ProductDetail productDetail){
+ if (productDetail == null || productDetail.getId() == null)
+ return new ArrayList<>();
+
+ String sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + productDetail.getId() +"' "
+ + "and send_mail=1 ";
+ //假装用sendMilQuery查了数据库,生成了userList作为查询结果
+ List userList = new ArrayList<>();
+ for (int i = 1; i <= 3; i++) {
+ UserInfo newInfo = new UserInfo("User" + i,"aa@bb.com", productDetail.getDescription());
+ userList.add(newInfo);
+ }
+ return userList;
+ }
+}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/FileUtil.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/FileUtil.java
new file mode 100644
index 0000000000..991f81a537
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/FileUtil.java
@@ -0,0 +1,49 @@
+package com.coderising.ood.srp.util;
+
+
+import com.coderising.ood.srp.DO.ProductDetail;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.Scanner;
+
+/**
+ * 文件操作类。
+ * 负责文件句柄的维护。
+ * 此类会打开促销文件,促销文件默认按照:
+ * "id" 空格 "产品名称"
+ * 进行存储,每行一条促销信息。
+ * @since 06.19.2017
+ */
+public class FileUtil {
+ private Scanner scanner;
+
+
+ public FileUtil(String filePath) throws FileNotFoundException {
+ scanner = new Scanner(new File(filePath));
+ }
+
+ public ProductDetail getNextProduct(){
+ String wholeInfo;
+ ProductDetail nextProduct = new ProductDetail();
+ wholeInfo = scanner.nextLine();
+
+ String[] splitInfo = wholeInfo.split(" ");
+ if (splitInfo.length < 2)
+ return nextProduct;
+
+ //促销文件按照 - "id" 空格 "产品名称" 进行记录的
+ nextProduct.setId(splitInfo[0]);
+ nextProduct.setDescription(splitInfo[1]);
+
+ return nextProduct;
+ }
+
+ public boolean hasNext(){
+ return scanner.hasNextLine();
+ }
+
+ public void close(){
+ scanner.close();
+ }
+}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
new file mode 100644
index 0000000000..065286d4f9
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
@@ -0,0 +1,97 @@
+package com.coderising.ood.srp.util;
+
+import com.coderising.ood.srp.DO.UserInfo;
+
+import java.util.List;
+
+
+/**
+ * 邮件发送类。
+ * 管理邮箱连接,发送等操作。
+ * @since 06.19.2017
+ */
+public class MailUtil {
+
+ /**
+ * SMTP连接失败异常。
+ * 可用getMessage()获得异常内容。
+ */
+ public static class SMTPConnectionFailedException extends Throwable{
+ public SMTPConnectionFailedException(String message){
+ super(message);
+ }
+ }
+
+ /**
+ * 主SMTP服务器地址
+ */
+ public static final String SMTP_SERVER = "smtp.163.com";
+
+ /**
+ * 备用SMTP服务器地址
+ */
+ public static final String ALT_SMTP_SERVER = "smtp1.163.com";
+
+ /**
+ * 以哪个邮箱地址发送给用户
+ */
+ public static final String EMAIL_ADMIN = "admin@company.com";
+
+
+ /**
+ * 邮件发送操作。
+ * 将降价促销邮件逐个发送给用户信息表中对应的用户。
+ * 捕获SMTPConnectionFailedException。提示手动发送。并继续发送下一封邮件。
+ * @param usersList 用户信息表。包含用户姓名,邮箱和订阅产品名称。
+ */
+ public static void sendEmails(List usersList){
+ if (usersList == null) {
+ System.out.println("没有邮件发送");
+ return;
+ }
+
+ for (UserInfo info : usersList){
+ if (!info.getEmail().isEmpty()) {
+ String emailInfo = generatePromotionEmail(info);
+ try {
+ sendPromotionEmail(emailInfo);
+ } catch (SMTPConnectionFailedException e){
+ System.out.println("SMTP主副服务器连接失败,请手动发送以下邮件: \n");
+ System.out.println(e.getMessage());
+ }
+ }
+ }
+ }
+
+ /**
+ * 假装在发邮件。默认使用主SMTP发送,若发送失败则使用备用SMTP发送。
+ * 仍然失败,则抛出SMTPConnectFailException异常。
+ * @param emailInfo 要发送的邮件内容
+ * @throws SMTPConnectionFailedException 若主副SMTP服务器均连接失败,抛出异常。异常中包含完整的发送失败的邮件内容。可通过getMessage()方法获得邮件内容。
+ */
+ private static void sendPromotionEmail(String emailInfo) throws SMTPConnectionFailedException{
+ //默认以SMTP_SERVER 发送
+ //如果发送失败以ALT_SMTP_SERVER 重新发送
+ //如果还失败,throw new SMTPConnectionFailedException(emailInfo).
+ }
+
+ /**
+ * 根据用户信息生成促销邮件内容。
+ * @param userInfo 用户信息。
+ * @return 返回生成的邮件。
+ */
+ private static String generatePromotionEmail(UserInfo userInfo){
+ StringBuilder buffer = new StringBuilder();
+
+ buffer.append("From:").append(EMAIL_ADMIN).append("\n");
+ buffer.append("To:").append(userInfo.getEmail()).append("\n");
+ buffer.append("Subject:").append("您关注的产品降价了").append("\n");
+ buffer.append("Content:").append("尊敬的").append(userInfo.getName());
+ buffer.append(", 您关注的产品 ").append(userInfo.getProductDesc());
+ buffer.append(" 降价了,欢迎购买!").append("\n");
+
+ System.out.println(buffer.toString());
+
+ return buffer.toString();
+ }
+}
diff --git a/liuxin/ood/ood-assignment/test.txt b/liuxin/ood/ood-assignment/test.txt
new file mode 100644
index 0000000000..cb2d21edc4
--- /dev/null
+++ b/liuxin/ood/ood-assignment/test.txt
@@ -0,0 +1,5 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
+p123
From 927e4ab3e51f94e69eb148cdcc00fc2d1e688f90 Mon Sep 17 00:00:00 2001
From: walker <597222089@qq.com>
Date: Tue, 20 Jun 2017 07:47:20 +0800
Subject: [PATCH 10/25] ood
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
ood作业
---
students/597222089/ood/ood-assignment/pom.xml | 32 +++++++++
.../ood/srp/refactor/Configuration.java | 23 ++++++
.../ood/srp/refactor/ConfigurationKeys.java | 9 +++
.../coderising/ood/srp/refactor/Consumer.java | 23 ++++++
.../ood/srp/refactor/ConsumerUtils.java | 39 ++++++++++
.../coderising/ood/srp/refactor/Email.java | 36 ++++++++++
.../ood/srp/refactor/EmailUtils.java | 68 ++++++++++++++++++
.../coderising/ood/srp/refactor/MainSend.java | 16 +++++
.../coderising/ood/srp/refactor/Phone.java | 23 ++++++
.../ood/srp/refactor/PhoneUtils.java | 71 +++++++++++++++++++
10 files changed, 340 insertions(+)
create mode 100644 students/597222089/ood/ood-assignment/pom.xml
create mode 100644 students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Configuration.java
create mode 100644 students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/ConfigurationKeys.java
create mode 100644 students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Consumer.java
create mode 100644 students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/ConsumerUtils.java
create mode 100644 students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Email.java
create mode 100644 students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/EmailUtils.java
create mode 100644 students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/MainSend.java
create mode 100644 students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Phone.java
create mode 100644 students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/PhoneUtils.java
diff --git a/students/597222089/ood/ood-assignment/pom.xml b/students/597222089/ood/ood-assignment/pom.xml
new file mode 100644
index 0000000000..cac49a5328
--- /dev/null
+++ b/students/597222089/ood/ood-assignment/pom.xml
@@ -0,0 +1,32 @@
+
+ 4.0.0
+
+ com.coderising
+ ood-assignment
+ 0.0.1-SNAPSHOT
+ jar
+
+ ood-assignment
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+
+ junit
+ junit
+ 4.12
+
+
+
+
+
+ aliyunmaven
+ http://maven.aliyun.com/nexus/content/groups/public/
+
+
+
diff --git a/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Configuration.java b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Configuration.java
new file mode 100644
index 0000000000..80efc902d7
--- /dev/null
+++ b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Configuration.java
@@ -0,0 +1,23 @@
+package com.coderising.ood.srp.refactor;
+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/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/ConfigurationKeys.java b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/ConfigurationKeys.java
new file mode 100644
index 0000000000..5fa1f5fefb
--- /dev/null
+++ b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/ConfigurationKeys.java
@@ -0,0 +1,9 @@
+package com.coderising.ood.srp.refactor;
+
+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/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Consumer.java b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Consumer.java
new file mode 100644
index 0000000000..8bb8774dbd
--- /dev/null
+++ b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Consumer.java
@@ -0,0 +1,23 @@
+package com.coderising.ood.srp.refactor;
+
+/**
+ * Created by walker on 2017/6/20.
+ */
+
+public class Consumer {
+ private String name;
+ private String email;
+
+ public Consumer(String name, String email) {
+ this.name = name;
+ this.email = email;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+}
diff --git a/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/ConsumerUtils.java b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/ConsumerUtils.java
new file mode 100644
index 0000000000..ad0f4be3d8
--- /dev/null
+++ b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/ConsumerUtils.java
@@ -0,0 +1,39 @@
+package com.coderising.ood.srp.refactor;
+
+import com.coderising.ood.srp.DBUtil;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Created by walker on 2017/6/20.
+ */
+
+public class ConsumerUtils {
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+ public static List getConsumers() {
+ List consumers = new ArrayList<>();
+
+ String sql = "";
+ List query = DBUtil.query(sql);
+
+ Iterator iter = query.iterator();
+ while (iter.hasNext()) {
+
+ HashMap info = (HashMap) iter.next();
+
+ String name = info.get(NAME_KEY);
+ String email = info.get(EMAIL_KEY);
+
+ Consumer consumer = new Consumer(name, email);
+
+ consumers.add(consumer);
+ }
+
+ return consumers;
+ }
+}
diff --git a/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Email.java b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Email.java
new file mode 100644
index 0000000000..6d3f1d71f1
--- /dev/null
+++ b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Email.java
@@ -0,0 +1,36 @@
+package com.coderising.ood.srp.refactor;
+
+/**
+ * Created by walker on 2017/6/20.
+ */
+
+public class Email {
+ private String subject;
+ private String message;
+
+ private String fromAddress = null;
+ private String toAddress = null;
+
+ public Email(String subject, String message, String fromAddress, String toAddress) {
+ this.subject = subject;
+ this.message = message;
+ this.fromAddress = fromAddress;
+ this.toAddress = toAddress;
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public String getFromAddress() {
+ return fromAddress;
+ }
+
+ public String getToAddress() {
+ return toAddress;
+ }
+}
diff --git a/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/EmailUtils.java b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/EmailUtils.java
new file mode 100644
index 0000000000..db90ca1ac6
--- /dev/null
+++ b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/EmailUtils.java
@@ -0,0 +1,68 @@
+package com.coderising.ood.srp.refactor;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Created by walker on 2017/6/20.
+ */
+
+public class EmailUtils {
+
+ private static final String SUBJECT = "您关注的产品降价了";
+ private static String smtpHost;
+ private static String altSmtpHost;
+ private static boolean debug = false;
+
+ private static List getEmails() {
+ List emails = new ArrayList<>();
+
+ List consumers = ConsumerUtils.getConsumers();
+ Iterator iter = consumers.iterator();
+
+ Configuration conf = new Configuration();
+
+ smtpHost = conf.getProperty(ConfigurationKeys.SMTP_SERVER);
+ altSmtpHost = conf.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+
+ while (iter.hasNext()) {
+ Consumer consumer = (Consumer) iter.next();
+ String message = PhoneUtils.getMessage(consumer.getName());
+ String fromAddress = conf.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ String toAddress = consumer.getEmail();
+ Email email = new Email(SUBJECT, message, fromAddress, toAddress);
+ emails.add(email);
+ }
+
+ return emails;
+ }
+
+ private static void sendEmail(Email email, String smtpHost,
+ boolean debug) {
+ //假装发了一封邮件
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("From:").append(email.getFromAddress()).append("\n");
+ buffer.append("To:").append(email.getToAddress()).append("\n");
+ buffer.append("Subject:").append(email.getSubject()).append("\n");
+ buffer.append("Content:").append(email.getMessage()).append("\n");
+ System.out.println(buffer.toString());
+ }
+
+ public static void doSendEmail () {
+
+ List emails = getEmails();
+ for (Email email : emails) {
+ try {
+ sendEmail(email, smtpHost, debug);
+ } catch (Exception e) {
+ try {
+ sendEmail(email, altSmtpHost, debug);
+
+ } catch (Exception e2) {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+ }
+ }
+ }
+ }
+}
diff --git a/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/MainSend.java b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/MainSend.java
new file mode 100644
index 0000000000..3ae14256b4
--- /dev/null
+++ b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/MainSend.java
@@ -0,0 +1,16 @@
+package com.coderising.ood.srp.refactor;
+
+/**
+ * Created by walker on 2017/6/20.
+ */
+
+public class MainSend {
+
+
+ public static void main(String[] args) {
+ EmailUtils.doSendEmail();
+ }
+
+
+
+}
diff --git a/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Phone.java b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Phone.java
new file mode 100644
index 0000000000..3e0cf3ff32
--- /dev/null
+++ b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/Phone.java
@@ -0,0 +1,23 @@
+package com.coderising.ood.srp.refactor;
+
+/**
+ * Created by walker on 2017/6/19.
+ */
+
+public class Phone {
+ private String productID = null;
+ private String productDesc = null;
+
+ public Phone(String productID, String productDesc) {
+ this.productID = productID;
+ this.productDesc = productDesc;
+ }
+
+ public String getProductDesc() {
+ return productDesc;
+ }
+
+ public String getProductID() {
+ return productID;
+ }
+}
diff --git a/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/PhoneUtils.java b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/PhoneUtils.java
new file mode 100644
index 0000000000..a128f6bfd1
--- /dev/null
+++ b/students/597222089/ood/ood-assignment/src/main/java/com/coderising/ood/srp/refactor/PhoneUtils.java
@@ -0,0 +1,71 @@
+package com.coderising.ood.srp.refactor;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+
+public class PhoneUtils {
+ private static Set getPhones() {
+ Set phones = new HashSet<>();
+
+// Map phoneInfos = readFile("file");
+//
+// for (String id : phoneInfos.keySet()) {
+// Phone photo = new Phone();
+// photo.setProductID(id);
+// photo.setProductDesc(phoneInfos.get(id));
+// phones.add(photo);
+// }
+ phones.add(new Phone("P8756", "iPhone8"));
+ phones.add(new Phone("P3946", "XiaoMi10"));
+ phones.add(new Phone("P8904", "Oppo_R15"));
+ phones.add(new Phone("P4955", "Vivo_X20"));
+
+ return phones;
+ }
+
+ public static String getMessage(String name) {
+ StringBuffer infos = new StringBuffer();
+
+ Set phones = getPhones();
+ for (Phone phone : phones) {
+ infos.append("尊敬的 " + name + ", 您关注的产品 " + phone.getProductDesc() + " 降价了,欢迎购买!");
+ }
+ return infos.toString();
+ }
+
+ private static Map readFile (String filePath) {
+ BufferedReader br = null;
+ Map phoneMap = new HashMap<>();
+ try {
+ File file = new File(filePath);
+ br = new BufferedReader(new FileReader(file));
+
+ String temp;
+ while (null != (temp = br.readLine())) {
+ String[] data = temp.split(" ");
+
+ phoneMap.put(data[0], data[1]);
+ System.out.println("产品ID = " + data[0] + "\n");
+ System.out.println("产品描述 = " + data[1] + "\n");
+ }
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ br.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ return phoneMap;
+ }
+}
From 4c068f59c4e4c0d69d82bec1b02e9404445a2267 Mon Sep 17 00:00:00 2001
From: jimmy
Date: Tue, 20 Jun 2017 08:09:35 +0800
Subject: [PATCH 11/25] =?UTF-8?q?=E9=87=8D=E6=9E=84PromotionMail=E6=BB=A1?=
=?UTF-8?q?=E8=B6=B3SRP?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
students/63072784/pom.xml | 12 ++++
.../src/main/java/ood/srp/Configuration.java | 29 +++++++++
.../main/java/ood/srp/ConfigurationKeys.java | 11 ++++
.../src/main/java/ood/srp/DBUtil.java | 23 +++++++
.../63072784/src/main/java/ood/srp/Mail.java | 50 +++++++++++++++
.../src/main/java/ood/srp/MailAccount.java | 42 ++++++++++++
.../src/main/java/ood/srp/MailUtil.java | 35 ++++++++++
.../src/main/java/ood/srp/Product.java | 54 ++++++++++++++++
.../src/main/java/ood/srp/PromotionMail.java | 64 +++++++++++++++++++
.../src/main/java/ood/srp/UserInfo.java | 41 ++++++++++++
.../src/main/resources/product_promotion.txt | 4 ++
11 files changed, 365 insertions(+)
create mode 100644 students/63072784/pom.xml
create mode 100644 students/63072784/src/main/java/ood/srp/Configuration.java
create mode 100644 students/63072784/src/main/java/ood/srp/ConfigurationKeys.java
create mode 100644 students/63072784/src/main/java/ood/srp/DBUtil.java
create mode 100644 students/63072784/src/main/java/ood/srp/Mail.java
create mode 100644 students/63072784/src/main/java/ood/srp/MailAccount.java
create mode 100644 students/63072784/src/main/java/ood/srp/MailUtil.java
create mode 100644 students/63072784/src/main/java/ood/srp/Product.java
create mode 100644 students/63072784/src/main/java/ood/srp/PromotionMail.java
create mode 100644 students/63072784/src/main/java/ood/srp/UserInfo.java
create mode 100644 students/63072784/src/main/resources/product_promotion.txt
diff --git a/students/63072784/pom.xml b/students/63072784/pom.xml
new file mode 100644
index 0000000000..42eddb8471
--- /dev/null
+++ b/students/63072784/pom.xml
@@ -0,0 +1,12 @@
+
+
+ 4.0.0
+
+ com.jimmykwong
+ coding2017
+ 1.0-SNAPSHOT
+
+
+
\ No newline at end of file
diff --git a/students/63072784/src/main/java/ood/srp/Configuration.java b/students/63072784/src/main/java/ood/srp/Configuration.java
new file mode 100644
index 0000000000..eb315dd7e3
--- /dev/null
+++ b/students/63072784/src/main/java/ood/srp/Configuration.java
@@ -0,0 +1,29 @@
+package 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");
+ configurations.put(ConfigurationKeys.EMAIL_ADMIN_PASSWORD, "admin!");
+ configurations.put(ConfigurationKeys.EMAIL_PORT, "25");
+ }
+
+ /**
+ * 应该从配置文件读, 但是这里简化为直接从一个map 中去读
+ *
+ * @param key
+ * @return
+ */
+ public String getProperty(String key) {
+
+ return configurations.get(key);
+ }
+
+}
diff --git a/students/63072784/src/main/java/ood/srp/ConfigurationKeys.java b/students/63072784/src/main/java/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..168ee4a304
--- /dev/null
+++ b/students/63072784/src/main/java/ood/srp/ConfigurationKeys.java
@@ -0,0 +1,11 @@
+package 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";
+ public static final String EMAIL_PORT = "email.port";
+ public static final String EMAIL_ADMIN_PASSWORD = "email.admin.password";
+
+}
diff --git a/students/63072784/src/main/java/ood/srp/DBUtil.java b/students/63072784/src/main/java/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..86c9ab9102
--- /dev/null
+++ b/students/63072784/src/main/java/ood/srp/DBUtil.java
@@ -0,0 +1,23 @@
+package ood.srp;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DBUtil {
+
+ /**
+ * 应该从数据库读, 但是简化为直接生成。
+ *
+ * @param sql
+ * @return
+ */
+ public static List query(String sql) {
+ System.out.printf("执行sql=" + sql);
+ List userList = new ArrayList<>();
+ for (int i = 1; i <= 3; i++) {
+ UserInfo userInfo = new UserInfo("User" + i, "aa@bb.com");
+ userList.add(userInfo);
+ }
+ return userList;
+ }
+}
diff --git a/students/63072784/src/main/java/ood/srp/Mail.java b/students/63072784/src/main/java/ood/srp/Mail.java
new file mode 100644
index 0000000000..db08647d9a
--- /dev/null
+++ b/students/63072784/src/main/java/ood/srp/Mail.java
@@ -0,0 +1,50 @@
+package ood.srp;
+
+/**
+ * Created by jimmy on 6/20/2017.
+ */
+public class Mail {
+ private MailAccount mailAccount;
+ private String toAddress;
+ private String subject;
+ private String message;
+
+ public Mail(MailAccount mailAccount, String toAddress, String subject, String message) {
+ this.mailAccount = mailAccount;
+ this.toAddress = toAddress;
+ this.subject = subject;
+ this.message = message;
+ }
+
+ public MailAccount getMailAccount() {
+ return mailAccount;
+ }
+
+ public void setMailAccount(MailAccount mailAccount) {
+ this.mailAccount = mailAccount;
+ }
+
+ public String getToAddress() {
+ return toAddress;
+ }
+
+ public void setToAddress(String toAddress) {
+ this.toAddress = toAddress;
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+}
diff --git a/students/63072784/src/main/java/ood/srp/MailAccount.java b/students/63072784/src/main/java/ood/srp/MailAccount.java
new file mode 100644
index 0000000000..f0aaf3ee49
--- /dev/null
+++ b/students/63072784/src/main/java/ood/srp/MailAccount.java
@@ -0,0 +1,42 @@
+package ood.srp;
+
+/**
+ * Created by jimmy on 6/20/2017.
+ */
+public class MailAccount {
+ private String smtpHost;
+ private String altSmtpHost;
+ private int port;
+ private String account;
+ private String password;
+
+ public static MailAccount buildAccount(Configuration config) {
+ MailAccount mailAccount = new MailAccount();
+ mailAccount.smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ mailAccount.altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+ mailAccount.port = Integer.parseInt(config.getProperty(ConfigurationKeys.EMAIL_PORT));
+ mailAccount.account = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ mailAccount.password = config.getProperty(ConfigurationKeys.EMAIL_ADMIN_PASSWORD);
+ return mailAccount;
+ }
+
+ public String getSmtpHost() {
+ return smtpHost;
+ }
+
+ public String getAltSmtpHost() {
+ return altSmtpHost;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public String getAccount() {
+ return account;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+}
diff --git a/students/63072784/src/main/java/ood/srp/MailUtil.java b/students/63072784/src/main/java/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..0e4d135252
--- /dev/null
+++ b/students/63072784/src/main/java/ood/srp/MailUtil.java
@@ -0,0 +1,35 @@
+package ood.srp;
+
+public class MailUtil {
+
+ public static void sendEmail(Mail mail, boolean debug) {
+ String toAddress = mail.getToAddress();
+ String fromAddress = mail.getMailAccount().getAccount();
+ String subject = mail.getSubject();
+ String message = mail.getMessage();
+ String smtpHost = mail.getMailAccount().getSmtpHost();
+ String altSmtpHost = mail.getMailAccount().getAltSmtpHost();
+ try {
+ sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
+ } catch (Exception e) {
+ try {
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
+
+ } catch (Exception e2) {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+ }
+ }
+
+ }
+
+ private static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
+ boolean debug) {
+ //假装发了一封邮件
+ 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());
+ }
+}
diff --git a/students/63072784/src/main/java/ood/srp/Product.java b/students/63072784/src/main/java/ood/srp/Product.java
new file mode 100644
index 0000000000..3e6b36b671
--- /dev/null
+++ b/students/63072784/src/main/java/ood/srp/Product.java
@@ -0,0 +1,54 @@
+package ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+/**
+ * Created by jimmy on 6/20/2017.
+ */
+public class Product {
+ private String productId;
+ private String productDesc;
+
+ public static Product getPromotionProduct(File file) throws Exception {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+
+ String productId = data[0];
+ String productDesc = data[1];
+
+ System.out.println("产品ID = " + productId + "\n");
+ System.out.println("产品描述 = " + productDesc + "\n");
+
+ Product product = new Product();
+ product.productId = productId;
+ product.productDesc = productDesc;
+ return product;
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ }
+
+ 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/63072784/src/main/java/ood/srp/PromotionMail.java b/students/63072784/src/main/java/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..abc97065e9
--- /dev/null
+++ b/students/63072784/src/main/java/ood/srp/PromotionMail.java
@@ -0,0 +1,64 @@
+package ood.srp;
+
+import java.io.File;
+import java.util.List;
+
+public class PromotionMail {
+
+
+ private static final String SUBJECT = "您关注的商品降价了";
+
+ public static void main(String[] args) throws Exception {
+ //这里可以做成参数输入
+ File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+ boolean debug = true;
+ PromotionMail pe = new PromotionMail();
+ pe.sendEMails(f, debug);
+ }
+
+
+ public PromotionMail() {
+ }
+
+ private String buildMessage(UserInfo userInfo, Product product) {
+ return String.format("尊敬的 %s, 您关注的产品 %s 降价了,欢迎购买!", userInfo.getName(), product.getProductDesc());
+ }
+
+ private Mail buildMail(MailAccount mailAccount, UserInfo userInfo, Product product) {
+ //可以更加详细的检查
+ if (mailAccount == null || userInfo == null || product == null) {
+ return null;
+ } else {
+ String message = buildMessage(userInfo, product);
+ return new Mail(mailAccount, userInfo.getEmailAddress(), SUBJECT, message);
+ }
+ }
+
+
+ private void sendEMails(File file, boolean debug) throws Exception {
+
+ //构建发送邮件账号
+ MailAccount mailAccount = MailAccount.buildAccount(new Configuration());
+
+ //读取降价列表
+ Product product = Product.getPromotionProduct(file);
+
+ //获取订阅用户列表
+ List userInfoList = UserInfo.getUserInfo(product.getProductId());
+
+ System.out.println("开始发送邮件");
+
+ if (userInfoList != null) {
+ for (UserInfo userInfo : userInfoList) {
+ Mail mail = buildMail(mailAccount, userInfo, product);
+ if (mail == null) {
+ continue;
+ }
+ MailUtil.sendEmail(mail, debug);
+ }
+ } else {
+ System.out.println("没有邮件发送");
+
+ }
+ }
+}
diff --git a/students/63072784/src/main/java/ood/srp/UserInfo.java b/students/63072784/src/main/java/ood/srp/UserInfo.java
new file mode 100644
index 0000000000..3387dcb1bc
--- /dev/null
+++ b/students/63072784/src/main/java/ood/srp/UserInfo.java
@@ -0,0 +1,41 @@
+package ood.srp;
+
+import java.util.List;
+
+/**
+ * Created by jimmy on 6/20/2017.
+ */
+public class UserInfo {
+ private String name;
+ private String emailAddress;
+
+ public UserInfo(String name, String emailAddress) {
+ this.name = name;
+ this.emailAddress = emailAddress;
+ }
+
+ private static final String QUERY_PRODUCT = "Select name from subscriptions "
+ + "where product_id= '%s' "
+ + "and send_mail=1 ";
+
+ public static List getUserInfo(String productId) {
+ System.out.println("loadQuery set");
+ return DBUtil.query(String.format(QUERY_PRODUCT, productId));
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getEmailAddress() {
+ return emailAddress;
+ }
+
+ public void setEmailAddress(String emailAddress) {
+ this.emailAddress = emailAddress;
+ }
+}
diff --git a/students/63072784/src/main/resources/product_promotion.txt b/students/63072784/src/main/resources/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/63072784/src/main/resources/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
From 473e0e8a9d2e874a706eeb300cd08377370d5293 Mon Sep 17 00:00:00 2001
From: jimmy
Date: Tue, 20 Jun 2017 08:19:11 +0800
Subject: [PATCH 12/25] =?UTF-8?q?=E9=87=8D=E6=9E=84PromotionMail=E6=BB=A1?=
=?UTF-8?q?=E8=B6=B3SRP?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
students/63072784/pom.xml | 4 ++++
students/63072784/src/main/java/ood/srp/PromotionMail.java | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/students/63072784/pom.xml b/students/63072784/pom.xml
index 42eddb8471..4c78ba51ac 100644
--- a/students/63072784/pom.xml
+++ b/students/63072784/pom.xml
@@ -8,5 +8,9 @@
coding2017
1.0-SNAPSHOT
+
+ 1.8
+ 1.8
+
\ No newline at end of file
diff --git a/students/63072784/src/main/java/ood/srp/PromotionMail.java b/students/63072784/src/main/java/ood/srp/PromotionMail.java
index abc97065e9..a41c7fe446 100644
--- a/students/63072784/src/main/java/ood/srp/PromotionMail.java
+++ b/students/63072784/src/main/java/ood/srp/PromotionMail.java
@@ -10,7 +10,7 @@ public class PromotionMail {
public static void main(String[] args) throws Exception {
//这里可以做成参数输入
- File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+ File f = new File("product_promotion.txt");
boolean debug = true;
PromotionMail pe = new PromotionMail();
pe.sendEMails(f, debug);
From bbafab3fbb001ec8ef76beda2c76630f58ed4cac Mon Sep 17 00:00:00 2001
From: jimmy
Date: Tue, 20 Jun 2017 08:37:01 +0800
Subject: [PATCH 13/25] =?UTF-8?q?=E9=87=8D=E6=9E=84PromotionMail=E6=BB=A1?=
=?UTF-8?q?=E8=B6=B3SRP?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
students/63072784/src/main/java/ood/srp/PromotionMail.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/students/63072784/src/main/java/ood/srp/PromotionMail.java b/students/63072784/src/main/java/ood/srp/PromotionMail.java
index a41c7fe446..f6646fac14 100644
--- a/students/63072784/src/main/java/ood/srp/PromotionMail.java
+++ b/students/63072784/src/main/java/ood/srp/PromotionMail.java
@@ -10,7 +10,7 @@ public class PromotionMail {
public static void main(String[] args) throws Exception {
//这里可以做成参数输入
- File f = new File("product_promotion.txt");
+ File f = new File(PromotionMail.class.getClassLoader().getResource("product_promotion.txt").toURI());
boolean debug = true;
PromotionMail pe = new PromotionMail();
pe.sendEMails(f, debug);
From 8fbb80a7f3b43e26502778dca8512a1cb9c4ee3e Mon Sep 17 00:00:00 2001
From: onlyliuxin <14703250@qq.com>
Date: Tue, 20 Jun 2017 11:16:56 +0800
Subject: [PATCH 14/25] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E6=AC=A1=E4=BD=9C?=
=?UTF-8?q?=E4=B8=9A=E5=8F=82=E8=80=83=E7=AD=94=E6=A1=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/coderising/ood/ocp/good/Formatter.java | 7 +++++++
.../ood/ocp/good/FormatterFactory.java | 13 +++++++++++++
.../coderising/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 +++++++
6 files changed, 67 insertions(+)
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Formatter.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/FormatterFactory.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/HtmlFormatter.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Logger.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/RawFormatter.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Sender.java
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Formatter.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Formatter.java
new file mode 100644
index 0000000000..b6e2ccbc16
--- /dev/null
+++ b/liuxin/ood/ood-assignment/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/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/FormatterFactory.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/FormatterFactory.java
new file mode 100644
index 0000000000..3c2009a674
--- /dev/null
+++ b/liuxin/ood/ood-assignment/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/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/HtmlFormatter.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/HtmlFormatter.java
new file mode 100644
index 0000000000..3d375f5acc
--- /dev/null
+++ b/liuxin/ood/ood-assignment/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/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Logger.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Logger.java
new file mode 100644
index 0000000000..f206472d0d
--- /dev/null
+++ b/liuxin/ood/ood-assignment/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/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/RawFormatter.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/RawFormatter.java
new file mode 100644
index 0000000000..7f1cb4ae30
--- /dev/null
+++ b/liuxin/ood/ood-assignment/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/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Sender.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/good/Sender.java
new file mode 100644
index 0000000000..aaa46c1fb7
--- /dev/null
+++ b/liuxin/ood/ood-assignment/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);
+
+}
From 5c6cd6b96464d2c68ebb292eabca6add58631ee5 Mon Sep 17 00:00:00 2001
From: onlyliuxin <14703250@qq.com>
Date: Tue, 20 Jun 2017 11:19:11 +0800
Subject: [PATCH 15/25] remove unused code
---
.../coderising/ood/srp/DO/ProductDetail.java | 26 -----------------
.../com/coderising/ood/srp/DO/UserInfo.java | 29 -------------------
2 files changed, 55 deletions(-)
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/ProductDetail.java
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/UserInfo.java
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/ProductDetail.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/ProductDetail.java
deleted file mode 100644
index 7b3041a000..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/ProductDetail.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.coderising.ood.srp.DO;
-
-/**
- * 产品信息数据类。
- * @since 06.18.2017
- */
-public class ProductDetail {
- private String id;
- private String description;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/UserInfo.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/UserInfo.java
deleted file mode 100644
index 14eff3c68a..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DO/UserInfo.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.coderising.ood.srp.DO;
-
-/**
- * 用户数据类。
- * @since 06.18.2017
- */
-public class UserInfo {
- private String name;
- private String email;
- private String productDesc;
-
- public UserInfo(String name, String email, String productDesc){
- this.name = name;
- this.email = email;
- this.productDesc = productDesc;
- }
-
- public String getName() {
- return name;
- }
-
- public String getEmail() {
- return email;
- }
-
- public String getProductDesc() {
- return productDesc;
- }
-}
From 3f9efb788593ad59377beaf06c6fbabe60d2aae3 Mon Sep 17 00:00:00 2001
From: onlyliuxin <14703250@qq.com>
Date: Tue, 20 Jun 2017 11:31:30 +0800
Subject: [PATCH 16/25] =?UTF-8?q?=E6=81=A2=E5=A4=8D=E8=A2=AB=E8=A6=86?=
=?UTF-8?q?=E7=9B=96=E7=9A=84=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
liuxin/ood/ood-assignment/pom.xml | 7 +-
.../com/coderising/ood/course/bad/Course.java | 24 ++
.../ood/course/bad/CourseOffering.java | 26 +++
.../ood/course/bad/CourseService.java | 16 ++
.../coderising/ood/course/bad/Student.java | 14 ++
.../coderising/ood/course/good/Course.java | 18 ++
.../ood/course/good/CourseOffering.java | 34 +++
.../ood/course/good/CourseService.java | 10 +
.../coderising/ood/course/good/Student.java | 21 ++
.../com/coderising/ood/srp/PromotionMail.java | 218 +++++++++++++++---
.../coderising/ood/srp/product_promotion.txt | 4 -
students/2831099157/ood-assignment/pom.xml | 32 ---
.../com/coderising/ood/srp/PromotionMail.java | 21 --
.../ood/srp/configure/Configuration.java | 23 --
.../ood/srp/configure/ConfigurationKeys.java | 9 -
.../com/coderising/ood/srp/dao/DBUtil.java | 27 ---
.../srp/interfaces/GetProductsFunction.java | 13 --
.../ood/srp/interfaces/SendMailFunction.java | 13 --
.../com/coderising/ood/srp/model/Mail.java | 112 ---------
.../com/coderising/ood/srp/model/Product.java | 46 ----
.../com/coderising/ood/srp/model/User.java | 25 --
.../coderising/ood/srp/product_promotion.txt | 4 -
.../ood/srp/service/GetProductsFromFile.java | 47 ----
.../ood/srp/service/GoodsArrivalNotice.java | 13 --
.../coderising/ood/srp/service/Notice.java | 25 --
.../ood/srp/service/PricePromotion.java | 12 -
.../ood/srp/service/SendGoodsArrivalMail.java | 42 ----
.../ood/srp/service/SendPriceMail.java | 42 ----
...10\351\207\215\346\236\204\357\274\211.md" | 23 --
students/550727632/pom.xml | 37 ---
.../java/com/coderising/ood/ocp/Logger.java | 20 --
.../coderising/ood/ocp/logs/ILogMethod.java | 10 -
.../com/coderising/ood/ocp/logs/ILogType.java | 12 -
.../ood/ocp/logs/impl/EmailLog.java | 13 --
.../ood/ocp/logs/impl/PrintLog.java | 12 -
.../coderising/ood/ocp/logs/impl/RowLog.java | 13 --
.../ood/ocp/logs/impl/RowLogWithDate.java | 12 -
.../coderising/ood/ocp/logs/impl/SMSLog.java | 13 --
.../com/coderising/ood/ocp/util/DateUtil.java | 10 -
.../com/coderising/ood/ocp/util/MailUtil.java | 10 -
.../com/coderising/ood/ocp/util/SMSUtil.java | 10 -
.../com/coderising/ood/srp/Configuration.java | 23 --
.../coderising/ood/srp/ConfigurationKeys.java | 9 -
.../java/com/coderising/ood/srp/DBUtil.java | 31 ---
.../java/com/coderising/ood/srp/FileUtil.java | 28 ---
.../java/com/coderising/ood/srp/MailUtil.java | 56 -----
.../java/com/coderising/ood/srp/Product.java | 29 ---
.../com/coderising/ood/srp/PromotionMail.java | 37 ---
.../java/com/coderising/ood/srp/User.java | 34 ---
.../coderising/ood/srp/product_promotion.txt | 4 -
50 files changed, 351 insertions(+), 993 deletions(-)
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Course.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseOffering.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseService.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Student.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Course.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseOffering.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseService.java
create mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Student.java
delete mode 100644 students/2831099157/ood-assignment/out/production/main/com/coderising/ood/srp/product_promotion.txt
delete mode 100644 students/2831099157/ood-assignment/pom.xml
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/Configuration.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/ConfigurationKeys.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/dao/DBUtil.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/interfaces/GetProductsFunction.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/interfaces/SendMailFunction.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/Mail.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/Product.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/User.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/GetProductsFromFile.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/GoodsArrivalNotice.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/Notice.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/PricePromotion.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/SendGoodsArrivalMail.java
delete mode 100644 students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/SendPriceMail.java
delete mode 100644 "students/2831099157/ood-assignment/\344\277\203\351\224\200Mail\345\217\221\351\200\201\347\273\203\344\271\240\357\274\210\351\207\215\346\236\204\357\274\211.md"
delete mode 100644 students/550727632/pom.xml
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/ocp/Logger.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/ocp/logs/ILogMethod.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/ocp/logs/ILogType.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/EmailLog.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/PrintLog.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/RowLog.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/RowLogWithDate.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/SMSLog.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/ocp/util/DateUtil.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/ocp/util/MailUtil.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/Configuration.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/DBUtil.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/FileUtil.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/MailUtil.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/Product.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/PromotionMail.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/User.java
delete mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/product_promotion.txt
diff --git a/liuxin/ood/ood-assignment/pom.xml b/liuxin/ood/ood-assignment/pom.xml
index d1ed73a0bf..cac49a5328 100644
--- a/liuxin/ood/ood-assignment/pom.xml
+++ b/liuxin/ood/ood-assignment/pom.xml
@@ -21,12 +21,7 @@
junit
4.12
-
- org.jetbrains
- annotations-java5
- RELEASE
-
-
+
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Course.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Course.java
new file mode 100644
index 0000000000..436d092f58
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Course.java
@@ -0,0 +1,24 @@
+package com.coderising.ood.course.bad;
+
+import java.util.List;
+
+public class Course {
+ private String id;
+ private String desc;
+ private int duration ;
+
+ List prerequisites;
+
+ public List getPrerequisites() {
+ return prerequisites;
+ }
+
+
+ public boolean equals(Object o){
+ if(o == null || !(o instanceof Course)){
+ return false;
+ }
+ Course c = (Course)o;
+ return (c != null) && c.id.equals(id);
+ }
+}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseOffering.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseOffering.java
new file mode 100644
index 0000000000..ab8c764584
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseOffering.java
@@ -0,0 +1,26 @@
+package com.coderising.ood.course.bad;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class CourseOffering {
+ private Course course;
+ private String location;
+ private String teacher;
+ private int maxStudents;
+
+ List students = new ArrayList();
+
+ public int getMaxStudents() {
+ return maxStudents;
+ }
+
+ public List getStudents() {
+ return students;
+ }
+
+ public Course getCourse() {
+ return course;
+ }
+}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseService.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseService.java
new file mode 100644
index 0000000000..8c34bad0c3
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseService.java
@@ -0,0 +1,16 @@
+package com.coderising.ood.course.bad;
+
+
+
+public class CourseService {
+
+ public void chooseCourse(Student student, CourseOffering sc){
+ //如果学生上过该科目的先修科目,并且该课程还未满, 则学生可以加入该课程
+ if(student.getCoursesAlreadyTaken().containsAll(
+ sc.getCourse().getPrerequisites())
+ && sc.getMaxStudents() > sc.getStudents().size()){
+ sc.getStudents().add(student);
+ }
+
+ }
+}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Student.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Student.java
new file mode 100644
index 0000000000..a651923ef5
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Student.java
@@ -0,0 +1,14 @@
+package com.coderising.ood.course.bad;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Student {
+ private String id;
+ private String name;
+ private List coursesAlreadyTaken = new ArrayList();
+
+ public List getCoursesAlreadyTaken() {
+ return coursesAlreadyTaken;
+ }
+}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Course.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Course.java
new file mode 100644
index 0000000000..aefc9692bb
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Course.java
@@ -0,0 +1,18 @@
+package com.coderising.ood.course.good;
+
+import java.util.List;
+
+public class Course {
+ private String id;
+ private String desc;
+ private int duration ;
+
+ List prerequisites;
+
+ public List getPrerequisites() {
+ return prerequisites;
+ }
+
+}
+
+
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseOffering.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseOffering.java
new file mode 100644
index 0000000000..ae922572f7
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseOffering.java
@@ -0,0 +1,34 @@
+package com.coderising.ood.course.good;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CourseOffering {
+ private Course course;
+ private String location;
+ private String teacher;
+ private int maxStudents;
+
+ List students = new ArrayList();
+
+ /*public List getStudents() {
+ return students;
+ }*/
+ /*public int getMaxStudents() {
+ return maxStudents;
+ }*/
+ /*public Course getCourse() {
+ return course;
+ }*/
+
+
+ // 第二步: 把主要逻辑移动到CourseOffering 中
+ public void addStudent(Student student){
+
+ if(student.canAttend(course)
+ && this.maxStudents > students.size()){
+ students.add(student);
+ }
+ }
+ // 第三步: 重构CourseService
+}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseService.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseService.java
new file mode 100644
index 0000000000..49246a37ae
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseService.java
@@ -0,0 +1,10 @@
+package com.coderising.ood.course.good;
+
+
+
+public class CourseService {
+
+ public void chooseCourse(Student student, CourseOffering sc){
+ sc.addStudent(student);
+ }
+}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Student.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Student.java
new file mode 100644
index 0000000000..1a153a0bc9
--- /dev/null
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Student.java
@@ -0,0 +1,21 @@
+package com.coderising.ood.course.good;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Student {
+ private String id;
+ private String name;
+ private List coursesAlreadyTaken = new ArrayList();
+
+ /*public List getCoursesAlreadyTaken() {
+ return coursesAlreadyTaken;
+ }
+ */
+ public boolean canAttend(Course course){
+ return this.coursesAlreadyTaken.containsAll(
+ course.getPrerequisites());
+ }
+}
+
+
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
index 2ec66a4d47..781587a846 100644
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
+++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -1,43 +1,199 @@
package com.coderising.ood.srp;
-import com.coderising.ood.srp.DO.ProductDetail;
-import com.coderising.ood.srp.DO.UserInfo;
-import com.coderising.ood.srp.util.DBUtil;
-import com.coderising.ood.srp.util.FileUtil;
-import com.coderising.ood.srp.util.MailUtil;
-
-import java.io.FileNotFoundException;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
-/**
- * 程序入口点。
- * @since 06.19.2017
- */
public class PromotionMail {
- public static void main(String[] args){
- final String FILE_PATH = "test.txt";
- FileUtil fileUtil;
- //尝试打开促销文件
- try {
- fileUtil = new FileUtil(FILE_PATH);
- } catch (FileNotFoundException e){
- System.out.println("促销文件打开失败,请确认文件路径!");
- return;
- }
+ protected String sendMailQuery = null;
+
+
+ protected String smtpHost = null;
+ protected String altSmtpHost = null;
+ protected String fromAddress = null;
+ protected String toAddress = null;
+ protected String subject = null;
+ protected String message = null;
+
+ protected String productID = null;
+ protected String productDesc = null;
+
+ private static Configuration config;
+
+
+
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+
+ public static void main(String[] args) throws Exception {
+
+ File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+ boolean emailDebug = false;
+
+ PromotionMail pe = new PromotionMail(f, emailDebug);
+
+ }
+
+
+ public PromotionMail(File file, boolean mailDebug) throws Exception {
+
+ //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
+ readFile(file);
+
+
+ config = new Configuration();
+
+ setSMTPHost();
+ setAltSMTPHost();
+
+
+ setFromAddress();
+
+
+ setLoadQuery();
+
+ sendEMails(mailDebug, loadMailingList());
+
+
+ }
+
+
+
+
+ protected void setProductID(String productID)
+ {
+ this.productID = productID;
+
+ }
+
+ protected String getproductID()
+ {
+ return productID;
+ }
+
+ protected void setLoadQuery() throws Exception {
+
+ sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + productID +"' "
+ + "and send_mail=1 ";
+
+
+ System.out.println("loadQuery set");
+ }
+
+
+ protected void setSMTPHost()
+ {
+ smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ }
+
+
+ protected void setAltSMTPHost()
+ {
+ altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+
+ }
+
+
+ protected void setFromAddress()
+ {
+ fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+ protected void setMessage(HashMap userInfo) throws IOException
+ {
+
+ String name = (String) userInfo.get(NAME_KEY);
+
+ subject = "您关注的产品降价了";
+ message = "尊敬的 "+name+", 您关注的产品 " + productDesc + " 降价了,欢迎购买!" ;
+
+
+
+ }
+
+
+ protected void readFile(File file) throws IOException // @02C
+ {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+
+ setProductID(data[0]);
+ setProductDesc(data[1]);
+
+ System.out.println("产品ID = " + productID + "\n");
+ System.out.println("产品描述 = " + productDesc + "\n");
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ }
+
+ private void setProductDesc(String desc) {
+ this.productDesc = desc;
+ }
+
+
+ protected void configureEMail(HashMap userInfo) throws IOException
+ {
+ toAddress = (String) userInfo.get(EMAIL_KEY);
+ if (toAddress.length() > 0)
+ setMessage(userInfo);
+ }
+
+ protected List loadMailingList() throws Exception {
+ return DBUtil.query(this.sendMailQuery);
+ }
+
+
+ protected void sendEMails(boolean debug, List mailingList) throws IOException
+ {
+
+ System.out.println("开始发送邮件");
+
- sendAllEMails(fileUtil);
+ if (mailingList != null) {
+ Iterator iter = mailingList.iterator();
+ while (iter.hasNext()) {
+ configureEMail((HashMap) iter.next());
+ try
+ {
+ if (toAddress.length() > 0)
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
+ }
+ catch (Exception e)
+ {
+
+ try {
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
+
+ } catch (Exception e2)
+ {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+ }
+ }
+ }
+
- fileUtil.close();
- }
+ }
+ else {
+ System.out.println("没有邮件发送");
+
+ }
- private static void sendAllEMails(FileUtil fileUtil){
- while (fileUtil.hasNext()) {
- ProductDetail productDetail = fileUtil.getNextProduct();
- List usersList = DBUtil.query(productDetail);
- MailUtil.sendEmails(usersList);
- }
- }
+ }
}
diff --git a/students/2831099157/ood-assignment/out/production/main/com/coderising/ood/srp/product_promotion.txt b/students/2831099157/ood-assignment/out/production/main/com/coderising/ood/srp/product_promotion.txt
deleted file mode 100644
index b7a974adb3..0000000000
--- a/students/2831099157/ood-assignment/out/production/main/com/coderising/ood/srp/product_promotion.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-P8756 iPhone8
-P3946 XiaoMi10
-P8904 Oppo_R15
-P4955 Vivo_X20
\ No newline at end of file
diff --git a/students/2831099157/ood-assignment/pom.xml b/students/2831099157/ood-assignment/pom.xml
deleted file mode 100644
index cac49a5328..0000000000
--- a/students/2831099157/ood-assignment/pom.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
- 4.0.0
-
- com.coderising
- ood-assignment
- 0.0.1-SNAPSHOT
- jar
-
- ood-assignment
- http://maven.apache.org
-
-
- UTF-8
-
-
-
-
-
- junit
- junit
- 4.12
-
-
-
-
-
- aliyunmaven
- http://maven.aliyun.com/nexus/content/groups/public/
-
-
-
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
deleted file mode 100644
index 9eb1b21f29..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.coderising.ood.srp;
-
-import com.coderising.ood.srp.service.GoodsArrivalNotice;
-import com.coderising.ood.srp.service.Notice;
-
-/**
- * 可以根据不同运营方案,添加GetProductsFunction,SendMailFunction接口实现类及Notice子类,向订阅者发送通告
- */
-public class PromotionMail {
-
- public static void main(String[] args) throws Exception {
- //降价促销
-// Notice notice = new PricePromotion();
- //到货通知
- Notice notice = new GoodsArrivalNotice();
- notice.sendMail(notice.getProducts());
-
- }
-
-
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/Configuration.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/Configuration.java
deleted file mode 100644
index 5c0697782a..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/Configuration.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.coderising.ood.srp.configure;
-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/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/ConfigurationKeys.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/ConfigurationKeys.java
deleted file mode 100644
index c9cfba4974..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/ConfigurationKeys.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.coderising.ood.srp.configure;
-
-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/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/dao/DBUtil.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/dao/DBUtil.java
deleted file mode 100644
index c0e7f6508d..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/dao/DBUtil.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.coderising.ood.srp.dao;
-import com.coderising.ood.srp.model.User;
-
-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++) {
- User user = new User();
- user.setName("User" + i);
- user.seteMail("aa@bb.com");
- userList.add(user);
- }
-
- return userList;
- }
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/interfaces/GetProductsFunction.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/interfaces/GetProductsFunction.java
deleted file mode 100644
index f0894ea3c7..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/interfaces/GetProductsFunction.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.coderising.ood.srp.interfaces;
-
-import com.coderising.ood.srp.model.Product;
-
-import java.util.List;
-
-/**
- * Created by Iden on 2017/6/14.
- */
-public interface GetProductsFunction {
-
- List getProducts();
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/interfaces/SendMailFunction.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/interfaces/SendMailFunction.java
deleted file mode 100644
index cd27a45767..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/interfaces/SendMailFunction.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.coderising.ood.srp.interfaces;
-
-import com.coderising.ood.srp.model.Product;
-
-import java.util.List;
-
-/**
- * Created by Iden on 2017/6/14.
- */
-public interface SendMailFunction {
-
- void sendMail(List products);
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/Mail.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/Mail.java
deleted file mode 100644
index b94f27b29d..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/Mail.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.coderising.ood.srp.model;
-
-import com.coderising.ood.srp.configure.Configuration;
-import com.coderising.ood.srp.configure.ConfigurationKeys;
-
-/**
- * Created by Iden on 2017/6/14.
- */
-public class Mail {
- private String fromAddress;
- private String toAddress;
- private String subject;
- private String content;
- private String smtpHost = null;
- private String altSmtpHost = null;
-
- public Mail() {
- Configuration config = new Configuration();
- fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
- smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
- altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
- }
-
- public String getFromAddress() {
- return fromAddress;
- }
-
- public void setFromAddress(String fromAddress) {
- this.fromAddress = fromAddress;
- }
-
- public String getToAddress() {
- return toAddress;
- }
-
- public void setToAddress(String toAddress) {
- this.toAddress = toAddress;
- }
-
- public String getSubject() {
- return subject;
- }
-
- public void setSubject(String subject) {
- this.subject = subject;
- }
-
- public String getContent() {
- return content;
- }
-
- public void setContent(String content) {
- this.content = content;
- }
-
-
- public String getSmtpHost() {
- return smtpHost;
- }
-
- public void setSmtpHost(String smtpHost) {
- this.smtpHost = smtpHost;
- }
-
- public String getAltSmtpHost() {
- return altSmtpHost;
- }
-
- public void setAltSmtpHost(String altSmtpHost) {
- this.altSmtpHost = altSmtpHost;
- }
-
-
- public void send() {
- if(null==toAddress){
- System.out.println("发送地址不能为空");
- return;
- }
- try {
- sendMailBySmtpHost();
- } catch (Exception e) {
- try {
- sendMailBySmtpHost();
- } catch (Exception e2) {
- System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
- }
-
- }
- }
-
- private void sendMailBySmtpHost() {
- System.out.println("通过SMTP服务器开始发送邮件");
- //假装发了一封邮件
- 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(content).append("\n");
- System.out.println(buffer.toString());
- }
-
- private void sendMailByAlSmtpHost() {
- System.out.println("通过备用SMTP服务器开始发送邮件");
- //假装发了一封邮件
- 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(content).append("\n");
- System.out.println(buffer.toString());
- }
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/Product.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/Product.java
deleted file mode 100644
index f9f5b5a145..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/Product.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.coderising.ood.srp.model;
-
-import com.coderising.ood.srp.dao.DBUtil;
-
-import java.util.List;
-
-/**
- * Created by Iden on 2017/6/14.
- */
-public class Product {
- String id;
- String description;
-
- public Product(String id, String descript) {
- this.id = id;
- this.description = descript;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public List getSubscribers() {
- List userList = null;
- String sendMailQuery = "Select name from subscriptions "
- + "where product_id= '" + id + "' "
- + "and send_mail=1 ";
- userList = DBUtil.query(sendMailQuery);
- return userList;
-
- }
-
-
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/User.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/User.java
deleted file mode 100644
index 38bec29f59..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/model/User.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.coderising.ood.srp.model;
-
-/**
- * Created by Iden on 2017/6/14.
- */
-public class User {
- String name;
- String eMail;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String geteMail() {
- return eMail;
- }
-
- public void seteMail(String eMail) {
- this.eMail = eMail;
- }
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
deleted file mode 100644
index b7a974adb3..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-P8756 iPhone8
-P3946 XiaoMi10
-P8904 Oppo_R15
-P4955 Vivo_X20
\ No newline at end of file
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/GetProductsFromFile.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/GetProductsFromFile.java
deleted file mode 100644
index 92a1090c5e..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/GetProductsFromFile.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.coderising.ood.srp.service;
-
-import com.coderising.ood.srp.interfaces.GetProductsFunction;
-import com.coderising.ood.srp.model.Product;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by Iden on 2017/6/14.
- */
-public class GetProductsFromFile implements GetProductsFunction {
- public String filePath = "E:\\StudyProjects\\Java\\Workspace\\HomeWork\\coding2017\\liuxin\\ood\\ood-assignment\\" +
- "src\\main\\java\\com\\coderising\\ood\\srp\\product_promotion.txt";
-
- @Override
- public List getProducts() {
- BufferedReader br = null;
- List products = new ArrayList<>();
- try {
- File file = new File(filePath);
- br = new BufferedReader(new FileReader(file));
- String temp = null;
- while ((temp = br.readLine()) != null) {
- String[] data = temp.split(" ");
- Product product = new Product(data[0], data[1]);
- System.out.println("促销产品ID = " + product.getId());
- System.out.println("促销产品描述 = " + product.getDescription());
- products.add(product);
- }
-
- } catch (IOException e) {
- System.out.println("读取文件失败");
- } finally {
- try {
- br.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return products;
- }
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/GoodsArrivalNotice.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/GoodsArrivalNotice.java
deleted file mode 100644
index ee4723ec06..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/GoodsArrivalNotice.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.coderising.ood.srp.service;
-
-/**
- * Created by Iden on 2017/6/14.
- * 到货通知
- */
-public class GoodsArrivalNotice extends Notice {
- public GoodsArrivalNotice() {
- getProductsFunction = new GetProductsFromFile();
- sendMailFunction = new SendGoodsArrivalMail();
- }
-
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/Notice.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/Notice.java
deleted file mode 100644
index 6ac8e62402..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/Notice.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.coderising.ood.srp.service;
-
-import com.coderising.ood.srp.interfaces.GetProductsFunction;
-import com.coderising.ood.srp.interfaces.SendMailFunction;
-import com.coderising.ood.srp.model.Product;
-
-import java.util.List;
-
-/**
- * Created by Iden on 2017/6/14.
- * 各类通知(降价促销,抢购活动,到货通知等等)
- */
-public abstract class Notice {
- GetProductsFunction getProductsFunction;
- SendMailFunction sendMailFunction;
-
- public List getProducts() {
- return getProductsFunction.getProducts();
- }
-
- public void sendMail(List products) {
- sendMailFunction.sendMail(products);
- }
-
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/PricePromotion.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/PricePromotion.java
deleted file mode 100644
index ebb59571c0..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/PricePromotion.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.coderising.ood.srp.service;
-
-/**
- * Created by Iden on 2017/6/14.
- */
-public class PricePromotion extends Notice {
- public PricePromotion() {
- getProductsFunction = new GetProductsFromFile();
- sendMailFunction = new SendPriceMail();
- }
-
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/SendGoodsArrivalMail.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/SendGoodsArrivalMail.java
deleted file mode 100644
index 79f3a6985f..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/SendGoodsArrivalMail.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.coderising.ood.srp.service;
-
-import com.coderising.ood.srp.interfaces.SendMailFunction;
-import com.coderising.ood.srp.model.Mail;
-import com.coderising.ood.srp.model.Product;
-import com.coderising.ood.srp.model.User;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Created by Iden on 2017/6/14.
- */
-public class SendGoodsArrivalMail implements SendMailFunction {
-
-
- @Override
- public void sendMail(List products) {
- if (null == products || products.size() == 0) {
- System.out.println("没有发现到货的产品");
- return;
- }
- Iterator iterator = products.iterator();
- while (iterator.hasNext()) {
- Product product = iterator.next();
- List userList = product.getSubscribers();
- if (null == userList || userList.size() == 0) {
- System.out.println("没有人订阅" + product.getDescription() + " 信息");
- continue;
- }
- Iterator iter = userList.iterator();
- while (iter.hasNext()) {
- User user = (User) iter.next();
- Mail mail = new Mail();
- mail.setSubject("您关注的产品到货了");
- mail.setContent("尊敬的 " + user.getName() + ", 您关注的产品 " + product.getDescription() + " 到货了,欢迎购买");
- mail.setToAddress(user.geteMail());
- mail.send();
- }
- }
- }
-}
diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/SendPriceMail.java b/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/SendPriceMail.java
deleted file mode 100644
index bae4803e3f..0000000000
--- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/service/SendPriceMail.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.coderising.ood.srp.service;
-
-import com.coderising.ood.srp.interfaces.SendMailFunction;
-import com.coderising.ood.srp.model.Mail;
-import com.coderising.ood.srp.model.Product;
-import com.coderising.ood.srp.model.User;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Created by Iden on 2017/6/14.
- */
-public class SendPriceMail implements SendMailFunction {
-
-
- @Override
- public void sendMail(List products) {
- if (null == products || products.size() == 0) {
- System.out.println("没有发现需要促销的产品");
- return;
- }
- Iterator iterator = products.iterator();
- while (iterator.hasNext()) {
- Product product = iterator.next();
- List userList = product.getSubscribers();
- if (null == userList || userList.size() == 0) {
- System.out.println("没有人订阅 " + product.getDescription() + " 信息");
- continue;
- }
- Iterator iter = userList.iterator();
- while (iter.hasNext()) {
- User user = (User) iter.next();
- Mail mail = new Mail();
- mail.setSubject("您关注的产品降价了");
- mail.setContent("尊敬的 " + user.getName() + ", 您关注的产品 " + product.getDescription() + " 降价了,欢迎购买");
- mail.setToAddress(user.geteMail());
- mail.send();
- }
- }
- }
-}
diff --git "a/students/2831099157/ood-assignment/\344\277\203\351\224\200Mail\345\217\221\351\200\201\347\273\203\344\271\240\357\274\210\351\207\215\346\236\204\357\274\211.md" "b/students/2831099157/ood-assignment/\344\277\203\351\224\200Mail\345\217\221\351\200\201\347\273\203\344\271\240\357\274\210\351\207\215\346\236\204\357\274\211.md"
deleted file mode 100644
index 33634cb9a9..0000000000
--- "a/students/2831099157/ood-assignment/\344\277\203\351\224\200Mail\345\217\221\351\200\201\347\273\203\344\271\240\357\274\210\351\207\215\346\236\204\357\274\211.md"
+++ /dev/null
@@ -1,23 +0,0 @@
-# 第一次OOD练习 #
-
-## 需求 ##
-### 原项目已经实现根据产品列表文件发送促销Mail,需求一直在变化,比如通过数据库获取促销产品或者促销活动改为到货通知,抢购等;为了应变各种变化,需重构代码。 ###
-## 需求分析 ##
-需求可变因素:
-
-1. 促销产品列表文件可能会变更,或者变更获取方式(如通过数据库获取)
-2. 促销活动会根据运营情况变更
-## 重构方案 ##
-1. 提取GetProductsFunction,SendMailFunction接口
-2. 添加Notice抽象类,针对接口添加getProducts,sendMai方法 -------各类通知(降价促销,抢购活动,到货通知等等)
-3. 添加Mail,Product,User实体类
-4. Mail初始化设置smtpHost,alSmtpHost,fromAddress参数,添加sendMail功能
-5. Product添加getSubscribers功能
-6. 添加GetProductsFunction,SendMailFunction接口实现类
-7. 添加PricePromotion继承Promotion,实现降价促销功能,实例化GetProductsFunction,SendMailFunction接口
-8. 主函数调用sendMail方法
-
-## 重构后 ##
-重构后项目,可以根据不同运营方案,添加GetProductsFunction,SendMailFunction接口实现类及Notice子类,向订阅者发送通告
-
-
diff --git a/students/550727632/pom.xml b/students/550727632/pom.xml
deleted file mode 100644
index 3483fcca18..0000000000
--- a/students/550727632/pom.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
- 4.0.0
- com.codering.ood
- coderising
- 0.0.1-SNAPSHOT
-
- ood-assignment
- http://maven.apache.org
-
-
- UTF-8
-
-
-
-
-
- junit
- junit
- 4.12
-
-
-
- org.apache.commons
- commons-lang3
- 3.4
-
-
-
-
-
-
- aliyunmaven
- http://maven.aliyun.com/nexus/content/groups/public/
-
-
-
\ No newline at end of file
diff --git a/students/550727632/src/main/java/com/coderising/ood/ocp/Logger.java b/students/550727632/src/main/java/com/coderising/ood/ocp/Logger.java
deleted file mode 100644
index 689b130f0d..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/ocp/Logger.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.coderising.ood.ocp;
-
-import com.coderising.ood.ocp.logs.ILogMethod;
-import com.coderising.ood.ocp.logs.ILogType;
-
-public class Logger {
-
- private ILogType logType;
- private ILogMethod logMethod;
-
- public Logger(ILogType logType, ILogMethod logMethod) {
- this.logType = logType;
- this.logMethod = logMethod;
- }
-
- public void log(String msg) {
- String logMsg = this.logType.formatMessage(msg);
- this.logMethod.sendLog(logMsg);
- }
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/ILogMethod.java b/students/550727632/src/main/java/com/coderising/ood/ocp/logs/ILogMethod.java
deleted file mode 100644
index 0dd74248e2..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/ILogMethod.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.coderising.ood.ocp.logs;
-
-public interface ILogMethod {
- /**
- * 发送log信息
- *
- * @param msg
- */
- void sendLog(String msg);
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/ILogType.java b/students/550727632/src/main/java/com/coderising/ood/ocp/logs/ILogType.java
deleted file mode 100644
index bdf07869ae..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/ILogType.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.coderising.ood.ocp.logs;
-
-public interface ILogType {
-
- /**
- * 格式化log信息
- *
- * @param msg
- * @return
- */
- String formatMessage(String msg);
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/EmailLog.java b/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/EmailLog.java
deleted file mode 100644
index 8e185560a8..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/EmailLog.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.coderising.ood.ocp.logs.impl;
-
-import com.coderising.ood.ocp.logs.ILogMethod;
-import com.coderising.ood.ocp.util.MailUtil;
-
-public class EmailLog implements ILogMethod {
-
- @Override
- public void sendLog(String msg) {
- MailUtil.send(msg);
- }
-
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/PrintLog.java b/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/PrintLog.java
deleted file mode 100644
index 81ad2e79ec..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/PrintLog.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.coderising.ood.ocp.logs.impl;
-
-import com.coderising.ood.ocp.logs.ILogMethod;
-
-public class PrintLog implements ILogMethod {
-
- @Override
- public void sendLog(String msg) {
- System.out.println(msg);
- }
-
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/RowLog.java b/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/RowLog.java
deleted file mode 100644
index a9aecfdfae..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/RowLog.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.coderising.ood.ocp.logs.impl;
-
-import com.coderising.ood.ocp.logs.ILogType;
-import com.coderising.ood.ocp.util.DateUtil;
-
-public class RowLog implements ILogType {
-
- @Override
- public String formatMessage(String msg) {
- return DateUtil.getCurrentDateAsString() + ":" + msg;
- }
-
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/RowLogWithDate.java b/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/RowLogWithDate.java
deleted file mode 100644
index 423cea620a..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/RowLogWithDate.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.coderising.ood.ocp.logs.impl;
-
-import com.coderising.ood.ocp.logs.ILogType;
-
-public class RowLogWithDate implements ILogType {
-
- @Override
- public String formatMessage(String msg) {
- return msg;
- }
-
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/SMSLog.java b/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/SMSLog.java
deleted file mode 100644
index e0b2c4c3e0..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/ocp/logs/impl/SMSLog.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.coderising.ood.ocp.logs.impl;
-
-import com.coderising.ood.ocp.logs.ILogMethod;
-import com.coderising.ood.ocp.util.SMSUtil;
-
-public class SMSLog implements ILogMethod {
-
- @Override
- public void sendLog(String msg) {
- SMSUtil.send(msg);
- }
-
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/ocp/util/DateUtil.java b/students/550727632/src/main/java/com/coderising/ood/ocp/util/DateUtil.java
deleted file mode 100644
index df8d253d9b..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/ocp/util/DateUtil.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.coderising.ood.ocp.util;
-
-public class DateUtil {
-
- public static String getCurrentDateAsString() {
-
- return null;
- }
-
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/ocp/util/MailUtil.java b/students/550727632/src/main/java/com/coderising/ood/ocp/util/MailUtil.java
deleted file mode 100644
index d95779b076..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/ocp/util/MailUtil.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.coderising.ood.ocp.util;
-
-public class MailUtil {
-
- public static void send(String logMsg) {
- // TODO Auto-generated method stub
-
- }
-
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java b/students/550727632/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java
deleted file mode 100644
index ae2359de92..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.coderising.ood.ocp.util;
-
-public class SMSUtil {
-
- public static void send(String logMsg) {
- // TODO Auto-generated method stub
-
- }
-
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/srp/Configuration.java b/students/550727632/src/main/java/com/coderising/ood/srp/Configuration.java
deleted file mode 100644
index f328c1816a..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/srp/Configuration.java
+++ /dev/null
@@ -1,23 +0,0 @@
-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/550727632/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/550727632/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
deleted file mode 100644
index 8695aed644..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
+++ /dev/null
@@ -1,9 +0,0 @@
-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/550727632/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/550727632/src/main/java/com/coderising/ood/srp/DBUtil.java
deleted file mode 100644
index 3b73afe420..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/srp/DBUtil.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.coderising.ood.srp;
-
-import java.util.ArrayList;
-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++) {
- User user = new User("User" + i, "aa@bb.com");
- userList.add(user);
- }
-
- return userList;
- }
-
- public static List loadProductUsers(Product product){
- String sql = "Select name from subscriptions "
- + "where product_id= '" + product.getProductID() +"' "
- + "and send_mail=1 ";
- return query(sql);
- }
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/srp/FileUtil.java b/students/550727632/src/main/java/com/coderising/ood/srp/FileUtil.java
deleted file mode 100644
index 0054feb8e0..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/srp/FileUtil.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.coderising.ood.srp;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-
-public class FileUtil {
-
- public static Product readProductFile(File file) throws IOException {
- BufferedReader br = null;
- Product product = new Product();
- try {
- br = new BufferedReader(new FileReader(file));
- String temp = br.readLine();
- String[] data = temp.split(" ");
- product.setProductID(data[0]);
- product.setProductDesc(data[1]);
- System.out.println(product.toString());
-
- } catch (IOException e) {
- throw new IOException(e.getMessage());
- } finally {
- br.close();
- }
- return product;
- }
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/550727632/src/main/java/com/coderising/ood/srp/MailUtil.java
deleted file mode 100644
index a61ab7e52c..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/srp/MailUtil.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.coderising.ood.srp;
-
-import java.util.List;
-
-import org.apache.commons.lang3.StringUtils;
-
-public class MailUtil {
-
- private static String fromAddress;
- private static String smtpHost;
- private static String altSmtpHost;
-
- static {
- Configuration config = new Configuration();
- fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
- smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
- altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
- }
-
- public static void sendPromotionEmail(PromotionMail mail, Product product, boolean debug) {
- System.out.println("开始发送邮件");
- List userList = DBUtil.loadProductUsers(product);
- if(userList != null && !userList.isEmpty()){
- for (User user : userList) {
- mail.setMessage(user, product);
- if (StringUtils.isNotEmpty(user.getEmail())){
- sendEmail(mail.getSubject(), mail.getMessage(), user.getEmail(), debug);
- }
- }
- } else {
- System.out.println("没有需要发送的邮件");
- }
- }
-
- public static void sendEmail(String subject, String message,String toAddress,boolean debug) {
- // 假装发了一封邮件
- 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");
- // 先用smtpHost发送
- // 如果失败用altSmtpHost发送
- // 如果还失败,则记录日志
- try {
- buffer.append("smtpHost:").append(smtpHost).append("\n");
- } catch (Exception e) {
- try {
- buffer.append("smtpHost:").append(altSmtpHost).append("\n");
- } catch (Exception e2) {
- System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
- }
- }
- System.out.println(buffer.toString());
- }
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/srp/Product.java b/students/550727632/src/main/java/com/coderising/ood/srp/Product.java
deleted file mode 100644
index fd107fa4f4..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/srp/Product.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.coderising.ood.srp;
-
-public class Product {
-
- private String productID;
- private String productDesc;
-
- 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;
- }
-
- @Override
- public String toString() {
- return "Product [productID=" + productID + ", productDesc=" + productDesc + "]";
- }
-
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/550727632/src/main/java/com/coderising/ood/srp/PromotionMail.java
deleted file mode 100644
index 23d48b0ae1..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/srp/PromotionMail.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.coderising.ood.srp;
-
-import java.io.File;
-
-public class PromotionMail {
- private String subject;
- private String message;
-
- public PromotionMail() {
- subject = "您关注的产品降价了";
- }
-
- public static void main(String[] args) throws Exception {
- File f = new File("src/main/java/com/coderising/ood/srp/product_promotion.txt");
- boolean emailDebug = false;
- Product product = FileUtil.readProductFile(f);
- PromotionMail mail = new PromotionMail();
- MailUtil.sendPromotionEmail(mail, product, emailDebug);
- }
-
- public String getSubject() {
- return subject;
- }
-
- public void setSubject(String subject) {
- this.subject = subject;
- }
-
- public void setMessage(User user, Product product) {
- message = "尊敬的 " + user.getName() + ", 您关注的产品 " + product.getProductDesc() + " 降价了,欢迎购买!";
- }
-
- public String getMessage() {
- return message;
- }
-
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/srp/User.java b/students/550727632/src/main/java/com/coderising/ood/srp/User.java
deleted file mode 100644
index b63f655e7c..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/srp/User.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.coderising.ood.srp;
-
-public class User {
-
- private String name;
- private String email;
-
- public User() {
- super();
- }
-
- public User(String name, String email) {
- super();
- this.name = name;
- this.email = email;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setEmail(String email) {
- this.email = email;
- }
-
-}
diff --git a/students/550727632/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/550727632/src/main/java/com/coderising/ood/srp/product_promotion.txt
deleted file mode 100644
index 0c0124cc61..0000000000
--- a/students/550727632/src/main/java/com/coderising/ood/srp/product_promotion.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-P8756 iPhone8
-P3946 XiaoMi10
-P8904 Oppo_R15
-P4955 Vivo_X20
\ No newline at end of file
From d124ab2642cc0d1d2cc5e905382aaf995ed7632c Mon Sep 17 00:00:00 2001
From: onlyliuxin <14703250@qq.com>
Date: Tue, 20 Jun 2017 11:32:46 +0800
Subject: [PATCH 17/25] =?UTF-8?q?=E6=81=A2=E5=A4=8D=E8=A2=AB=E5=88=A0?=
=?UTF-8?q?=E9=99=A4=E7=9A=84=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/coderising/ood/srp/util/DBUtil.java | 38 --------
.../com/coderising/ood/srp/util/FileUtil.java | 49 ----------
.../com/coderising/ood/srp/util/MailUtil.java | 97 -------------------
3 files changed, 184 deletions(-)
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/FileUtil.java
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java
deleted file mode 100644
index e1e0012855..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.coderising.ood.srp.util;
-import com.coderising.ood.srp.DO.ProductDetail;
-import com.coderising.ood.srp.DO.UserInfo;
-
-import java.util.*;
-
-/**
- * 数据库操作类。
- * 管理数据库连接,查询等操作。
- * @since 06.19.2017
- */
-public class DBUtil {
-
- //TODO 此处添加数据库连接信息
-
-
- /**
- * 应该从数据库读, 但是简化为直接生成。
- * 给一个产品详情,返回一个Array List记载所有订阅该产品的用户信息(名字,邮箱,订阅的产品名称)。
- * @param productDetail 传产品详情。产品id用来查询数据库。产品名称用于和用户信息绑定
- * @return 返回数据库中所有的查询到的结果。
- */
- public static List query(ProductDetail productDetail){
- if (productDetail == null || productDetail.getId() == null)
- return new ArrayList<>();
-
- String sendMailQuery = "Select name from subscriptions "
- + "where product_id= '" + productDetail.getId() +"' "
- + "and send_mail=1 ";
- //假装用sendMilQuery查了数据库,生成了userList作为查询结果
- List userList = new ArrayList<>();
- for (int i = 1; i <= 3; i++) {
- UserInfo newInfo = new UserInfo("User" + i,"aa@bb.com", productDetail.getDescription());
- userList.add(newInfo);
- }
- return userList;
- }
-}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/FileUtil.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/FileUtil.java
deleted file mode 100644
index 991f81a537..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/FileUtil.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.coderising.ood.srp.util;
-
-
-import com.coderising.ood.srp.DO.ProductDetail;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.util.Scanner;
-
-/**
- * 文件操作类。
- * 负责文件句柄的维护。
- * 此类会打开促销文件,促销文件默认按照:
- * "id" 空格 "产品名称"
- * 进行存储,每行一条促销信息。
- * @since 06.19.2017
- */
-public class FileUtil {
- private Scanner scanner;
-
-
- public FileUtil(String filePath) throws FileNotFoundException {
- scanner = new Scanner(new File(filePath));
- }
-
- public ProductDetail getNextProduct(){
- String wholeInfo;
- ProductDetail nextProduct = new ProductDetail();
- wholeInfo = scanner.nextLine();
-
- String[] splitInfo = wholeInfo.split(" ");
- if (splitInfo.length < 2)
- return nextProduct;
-
- //促销文件按照 - "id" 空格 "产品名称" 进行记录的
- nextProduct.setId(splitInfo[0]);
- nextProduct.setDescription(splitInfo[1]);
-
- return nextProduct;
- }
-
- public boolean hasNext(){
- return scanner.hasNextLine();
- }
-
- public void close(){
- scanner.close();
- }
-}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
deleted file mode 100644
index 065286d4f9..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package com.coderising.ood.srp.util;
-
-import com.coderising.ood.srp.DO.UserInfo;
-
-import java.util.List;
-
-
-/**
- * 邮件发送类。
- * 管理邮箱连接,发送等操作。
- * @since 06.19.2017
- */
-public class MailUtil {
-
- /**
- * SMTP连接失败异常。
- * 可用getMessage()获得异常内容。
- */
- public static class SMTPConnectionFailedException extends Throwable{
- public SMTPConnectionFailedException(String message){
- super(message);
- }
- }
-
- /**
- * 主SMTP服务器地址
- */
- public static final String SMTP_SERVER = "smtp.163.com";
-
- /**
- * 备用SMTP服务器地址
- */
- public static final String ALT_SMTP_SERVER = "smtp1.163.com";
-
- /**
- * 以哪个邮箱地址发送给用户
- */
- public static final String EMAIL_ADMIN = "admin@company.com";
-
-
- /**
- * 邮件发送操作。
- * 将降价促销邮件逐个发送给用户信息表中对应的用户。
- * 捕获SMTPConnectionFailedException。提示手动发送。并继续发送下一封邮件。
- * @param usersList 用户信息表。包含用户姓名,邮箱和订阅产品名称。
- */
- public static void sendEmails(List usersList){
- if (usersList == null) {
- System.out.println("没有邮件发送");
- return;
- }
-
- for (UserInfo info : usersList){
- if (!info.getEmail().isEmpty()) {
- String emailInfo = generatePromotionEmail(info);
- try {
- sendPromotionEmail(emailInfo);
- } catch (SMTPConnectionFailedException e){
- System.out.println("SMTP主副服务器连接失败,请手动发送以下邮件: \n");
- System.out.println(e.getMessage());
- }
- }
- }
- }
-
- /**
- * 假装在发邮件。默认使用主SMTP发送,若发送失败则使用备用SMTP发送。
- * 仍然失败,则抛出SMTPConnectFailException异常。
- * @param emailInfo 要发送的邮件内容
- * @throws SMTPConnectionFailedException 若主副SMTP服务器均连接失败,抛出异常。异常中包含完整的发送失败的邮件内容。可通过getMessage()方法获得邮件内容。
- */
- private static void sendPromotionEmail(String emailInfo) throws SMTPConnectionFailedException{
- //默认以SMTP_SERVER 发送
- //如果发送失败以ALT_SMTP_SERVER 重新发送
- //如果还失败,throw new SMTPConnectionFailedException(emailInfo).
- }
-
- /**
- * 根据用户信息生成促销邮件内容。
- * @param userInfo 用户信息。
- * @return 返回生成的邮件。
- */
- private static String generatePromotionEmail(UserInfo userInfo){
- StringBuilder buffer = new StringBuilder();
-
- buffer.append("From:").append(EMAIL_ADMIN).append("\n");
- buffer.append("To:").append(userInfo.getEmail()).append("\n");
- buffer.append("Subject:").append("您关注的产品降价了").append("\n");
- buffer.append("Content:").append("尊敬的").append(userInfo.getName());
- buffer.append(", 您关注的产品 ").append(userInfo.getProductDesc());
- buffer.append(" 降价了,欢迎购买!").append("\n");
-
- System.out.println(buffer.toString());
-
- return buffer.toString();
- }
-}
From 40aacb9497d34a38539c837a2e7ce8bbeea40eaf Mon Sep 17 00:00:00 2001
From: Andy <14703250@qq.com>
Date: Tue, 20 Jun 2017 11:33:42 +0800
Subject: [PATCH 18/25] Delete test.txt
---
liuxin/ood/ood-assignment/test.txt | 5 -----
1 file changed, 5 deletions(-)
delete mode 100644 liuxin/ood/ood-assignment/test.txt
diff --git a/liuxin/ood/ood-assignment/test.txt b/liuxin/ood/ood-assignment/test.txt
deleted file mode 100644
index cb2d21edc4..0000000000
--- a/liuxin/ood/ood-assignment/test.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-P8756 iPhone8
-P3946 XiaoMi10
-P8904 Oppo_R15
-P4955 Vivo_X20
-p123
From 4f161d36a88aa36e517f67a1a467a2b849a3d0da Mon Sep 17 00:00:00 2001
From: onlyliuxin <14703250@qq.com>
Date: Tue, 20 Jun 2017 11:35:12 +0800
Subject: [PATCH 19/25] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/coderising/ood/course/bad/Course.java | 24 -------------
.../ood/course/bad/CourseOffering.java | 26 --------------
.../ood/course/bad/CourseService.java | 16 ---------
.../coderising/ood/course/bad/Student.java | 14 --------
.../coderising/ood/course/good/Course.java | 18 ----------
.../ood/course/good/CourseOffering.java | 34 -------------------
.../ood/course/good/CourseService.java | 10 ------
.../coderising/ood/course/good/Student.java | 21 ------------
8 files changed, 163 deletions(-)
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Course.java
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseOffering.java
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseService.java
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Student.java
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Course.java
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseOffering.java
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseService.java
delete mode 100644 liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Student.java
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Course.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Course.java
deleted file mode 100644
index 436d092f58..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Course.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.coderising.ood.course.bad;
-
-import java.util.List;
-
-public class Course {
- private String id;
- private String desc;
- private int duration ;
-
- List prerequisites;
-
- public List getPrerequisites() {
- return prerequisites;
- }
-
-
- public boolean equals(Object o){
- if(o == null || !(o instanceof Course)){
- return false;
- }
- Course c = (Course)o;
- return (c != null) && c.id.equals(id);
- }
-}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseOffering.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseOffering.java
deleted file mode 100644
index ab8c764584..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseOffering.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.coderising.ood.course.bad;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-public class CourseOffering {
- private Course course;
- private String location;
- private String teacher;
- private int maxStudents;
-
- List students = new ArrayList();
-
- public int getMaxStudents() {
- return maxStudents;
- }
-
- public List getStudents() {
- return students;
- }
-
- public Course getCourse() {
- return course;
- }
-}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseService.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseService.java
deleted file mode 100644
index 8c34bad0c3..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/CourseService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.coderising.ood.course.bad;
-
-
-
-public class CourseService {
-
- public void chooseCourse(Student student, CourseOffering sc){
- //如果学生上过该科目的先修科目,并且该课程还未满, 则学生可以加入该课程
- if(student.getCoursesAlreadyTaken().containsAll(
- sc.getCourse().getPrerequisites())
- && sc.getMaxStudents() > sc.getStudents().size()){
- sc.getStudents().add(student);
- }
-
- }
-}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Student.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Student.java
deleted file mode 100644
index a651923ef5..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/bad/Student.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.coderising.ood.course.bad;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class Student {
- private String id;
- private String name;
- private List coursesAlreadyTaken = new ArrayList();
-
- public List getCoursesAlreadyTaken() {
- return coursesAlreadyTaken;
- }
-}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Course.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Course.java
deleted file mode 100644
index aefc9692bb..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Course.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.coderising.ood.course.good;
-
-import java.util.List;
-
-public class Course {
- private String id;
- private String desc;
- private int duration ;
-
- List prerequisites;
-
- public List getPrerequisites() {
- return prerequisites;
- }
-
-}
-
-
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseOffering.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseOffering.java
deleted file mode 100644
index ae922572f7..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseOffering.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.coderising.ood.course.good;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class CourseOffering {
- private Course course;
- private String location;
- private String teacher;
- private int maxStudents;
-
- List students = new ArrayList();
-
- /*public List getStudents() {
- return students;
- }*/
- /*public int getMaxStudents() {
- return maxStudents;
- }*/
- /*public Course getCourse() {
- return course;
- }*/
-
-
- // 第二步: 把主要逻辑移动到CourseOffering 中
- public void addStudent(Student student){
-
- if(student.canAttend(course)
- && this.maxStudents > students.size()){
- students.add(student);
- }
- }
- // 第三步: 重构CourseService
-}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseService.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseService.java
deleted file mode 100644
index 49246a37ae..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/CourseService.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.coderising.ood.course.good;
-
-
-
-public class CourseService {
-
- public void chooseCourse(Student student, CourseOffering sc){
- sc.addStudent(student);
- }
-}
diff --git a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Student.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Student.java
deleted file mode 100644
index 1a153a0bc9..0000000000
--- a/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/course/good/Student.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.coderising.ood.course.good;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class Student {
- private String id;
- private String name;
- private List coursesAlreadyTaken = new ArrayList();
-
- /*public List getCoursesAlreadyTaken() {
- return coursesAlreadyTaken;
- }
- */
- public boolean canAttend(Course course){
- return this.coursesAlreadyTaken.containsAll(
- course.getPrerequisites());
- }
-}
-
-
From 96a90f260d5e0ca1d6c5effd4684c8ef1018b9e8 Mon Sep 17 00:00:00 2001
From: chengyu
Date: Tue, 20 Jun 2017 23:35:57 +0800
Subject: [PATCH 20/25] =?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 21/25] =?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 22/25] =?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 23/25] 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 24/25] 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 25/25] 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;
+ }
+}