From a2fa5a922ec2759d59a29ae297c08b6d60df0522 Mon Sep 17 00:00:00 2001
From: vvivey <kobako@qq.com>
Date: Sat, 17 Jun 2017 18:41:44 +0800
Subject: [PATCH 1/4] first

---
 students/1398524980/README.md | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 students/1398524980/README.md

diff --git a/students/1398524980/README.md b/students/1398524980/README.md
new file mode 100644
index 0000000000..6af04c97b1
--- /dev/null
+++ b/students/1398524980/README.md
@@ -0,0 +1 @@
+#ç¬¬ä¸€æ¬¡ä½œä¸š
\ No newline at end of file

From 0d46d49344f03c453cc98148606cd1d490cfce34 Mon Sep 17 00:00:00 2001
From: vvivey <kobako@qq.com>
Date: Sat, 17 Jun 2017 18:52:32 +0800
Subject: [PATCH 2/4] second

---
 students/1398524980/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/students/1398524980/README.md b/students/1398524980/README.md
index 6af04c97b1..4e91a7ce31 100644
--- a/students/1398524980/README.md
+++ b/students/1398524980/README.md
@@ -1 +1 @@
-#ç¬¬ä¸€æ¬¡ä½œä¸š
\ No newline at end of file
+ç¬¬ä¸€æ¬¡ä½œä¸š
\ No newline at end of file

From ffc58bcdbbd4eaeee1a0c0d563810a9a12474cee Mon Sep 17 00:00:00 2001
From: vvivey <kobako@qq.com>
Date: Sat, 17 Jun 2017 19:25:05 +0800
Subject: [PATCH 3/4] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=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/1398524980/README.md                 |  2 +-
 .../1398524980/second phase/once/README.md    |  1 +
 .../com/coderising/ood/srp/Configuration.java | 34 ++++++++++++
 .../coderising/ood/srp/ConfigurationKeys.java |  9 ++++
 .../java/com/coderising/ood/srp/DBUtil.java   | 24 +++++++++
 .../com/coderising/ood/srp/FromAddress.java   | 15 ++++++
 .../coderising/ood/srp/LoadInformation.java   | 22 ++++++++
 .../java/com/coderising/ood/srp/MailUtil.java | 16 ++++++
 .../com/coderising/ood/srp/ProductInfo.java   | 52 +++++++++++++++++++
 .../com/coderising/ood/srp/PromotionMail.java | 36 +++++++++++++
 .../com/coderising/ood/srp/SendEMails.java    | 51 ++++++++++++++++++
 .../com/coderising/ood/srp/SetProtocol.java   | 32 ++++++++++++
 .../ood/srp/ToAddressAndMessage.java          | 52 +++++++++++++++++++
 .../coderising/ood/srp/product_promotion.txt  |  4 ++
 14 files changed, 349 insertions(+), 1 deletion(-)
 create mode 100644 students/1398524980/second phase/once/README.md
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/Configuration.java
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/FromAddress.java
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/LoadInformation.java
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ProductInfo.java
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/SendEMails.java
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/SetProtocol.java
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ToAddressAndMessage.java
 create mode 100644 students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt

diff --git a/students/1398524980/README.md b/students/1398524980/README.md
index 4e91a7ce31..a652ad5ecf 100644
--- a/students/1398524980/README.md
+++ b/students/1398524980/README.md
@@ -1 +1 @@
-ç¬¬ä¸€æ¬¡ä½œä¸š
\ No newline at end of file
+ä½œä¸š
\ No newline at end of file
diff --git a/students/1398524980/second phase/once/README.md b/students/1398524980/second phase/once/README.md
new file mode 100644
index 0000000000..4a2bb84fe9
--- /dev/null
+++ b/students/1398524980/second phase/once/README.md	
@@ -0,0 +1 @@
+é�¢å�‘å¯¹è±¡è®¾è®¡
\ No newline at end of file
diff --git a/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/Configuration.java b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/Configuration.java
new file mode 100644
index 0000000000..0fb3dcfa77
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/Configuration.java	
@@ -0,0 +1,34 @@
+package main.java.com.coderising.ood.srp;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class Configuration {
+
+	private static Configuration config;
+
+	static Map<String, String> 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");
+	}
+
+	private Configuration() {
+	}
+
+	protected static Configuration getConfig() {
+		return config;
+	}
+
+	/**
+	 * 
+	 * @param key
+	 * @return
+	 */
+	public String getProperty(String key) {
+
+		return configurations.get(key);
+	}
+
+}
diff --git a/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..e63eb922a4
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java	
@@ -0,0 +1,9 @@
+package main.java.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/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..1a88f401f1
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/DBUtil.java	
@@ -0,0 +1,24 @@
+package main.java.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<HashMap<String, String>> query(String sql){
+		
+		List<HashMap<String, String>> userList = new ArrayList<HashMap<String, String>>();
+		for (int i = 1; i <= 3; i++) {
+			HashMap<String, String> userInfo = new HashMap<String, String>();
+			userInfo.put("NAME", "User" + i);			
+			userInfo.put("EMAIL", "aa@bb.com");
+			userList.add(userInfo);
+		}
+
+		return userList;
+	}
+}
diff --git a/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/FromAddress.java b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/FromAddress.java
new file mode 100644
index 0000000000..1a71da260d
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/FromAddress.java	
@@ -0,0 +1,15 @@
+package main.java.com.coderising.ood.srp;
+
+public class FromAddress {
+
+	private String fromAddress = null;
+	
+	protected void setFromAddress() {
+		fromAddress = Configuration.getConfig().getProperty(ConfigurationKeys.EMAIL_ADMIN);
+	}
+
+	public String getFromAddress() {
+		return fromAddress;
+	}
+
+}
diff --git a/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/LoadInformation.java b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/LoadInformation.java
new file mode 100644
index 0000000000..1eac48983f
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/LoadInformation.java	
@@ -0,0 +1,22 @@
+package main.java.com.coderising.ood.srp;
+
+import java.util.List;
+
+public class LoadInformation {
+
+	private String productID = new ProductInfo().getproductID();
+	
+	private String sendMailQuery = null;
+	
+	protected List<?> loadMailingList() throws Exception {
+		return DBUtil.query(this.sendMailQuery);
+	}
+
+	protected void setLoadQuery() throws Exception {
+
+		sendMailQuery = "Select name from subscriptions " + "where product_id= '" + productID + "' " + "and send_mail=1 ";
+
+		System.out.println("loadQuery set");
+	}
+
+}
diff --git a/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..84dbffa75d
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/MailUtil.java	
@@ -0,0 +1,16 @@
+package main.java.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/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ProductInfo.java b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ProductInfo.java
new file mode 100644
index 0000000000..a678d2987e
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ProductInfo.java	
@@ -0,0 +1,52 @@
+package main.java.com.coderising.ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+public class ProductInfo {
+
+	private String productID = null;
+	private String productDesc = null;
+
+	/**
+	 * 
+	 * @throws IOException
+	 */
+	public void readProductInfo(String pomotionInfoAddress) throws IOException {
+
+		File f = new File(pomotionInfoAddress);
+		
+		readFile(f);
+	}
+
+	private void readFile(File file) throws IOException {
+		BufferedReader br = null;
+		try {
+			br = new BufferedReader(new FileReader(file));
+			String temp = br.readLine();
+			String[] data = temp.split(" ");
+
+			productID = data[0];
+			productDesc = data[1];
+
+			System.out.println("²úÆ·ID = " + productID + "\n");
+			System.out.println("²úÆ·ÃèÊö = " + productDesc + "\n");
+
+		} catch (IOException e) {
+			throw new IOException(e.getMessage());
+		} finally {
+			br.close();
+		}
+	}
+
+	protected String getproductID() {
+		return productID;
+	}
+
+	protected String getProductDesc() {
+		return productDesc;
+	}
+
+}
diff --git a/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..c94ac5a088
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java	
@@ -0,0 +1,36 @@
+package main.java.com.coderising.ood.srp;
+
+public class PromotionMail {
+
+	private static ProductInfo productInfo = new ProductInfo();
+	private static SetProtocol setprotocol = new SetProtocol();
+	private static LoadInformation loadInformation = new LoadInformation();
+	private static FromAddress fromAddress = new FromAddress();
+	private static SendEMails sendEmails = new SendEMails();
+
+	public static void main(String[] args) throws Exception {
+
+		boolean emailDebug = false;
+		new PromotionMail(emailDebug,
+				"C:\\Users\\123\\Documents\\workspace\\ood_assignment\\src\\com\\coderising\\ood\\srp\\product_promotion.txt");
+	}
+
+	PromotionMail(boolean emailDebug, String pomotionInfoAddress) throws Exception {
+
+		// ¶ÁÈ¡ÉÌÆ·ÐÅÏ¢
+		productInfo.readProductInfo(pomotionInfoAddress);
+
+		// ÉèÖÃ·¢ËÍ·þÎñÐ­Òé
+		setprotocol.setProtocol();
+
+		// ÉèÖÃ¶ÁÈ¡ÐÅÏ¢
+		loadInformation.setLoadQuery();
+
+		// ÉèÖÃ·¢ËÍµØÖ·
+		fromAddress.setFromAddress();
+
+		// ÉèÖÃÓÊ¼þÄÚÈÝ ²¢ ·¢ËÍÓÊ¼þ
+		sendEmails.sendEMails(emailDebug);
+	}
+
+}
\ No newline at end of file
diff --git a/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/SendEMails.java b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/SendEMails.java
new file mode 100644
index 0000000000..29bb0f1363
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/SendEMails.java	
@@ -0,0 +1,51 @@
+package main.java.com.coderising.ood.srp;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+public class SendEMails {
+
+	private ToAddressAndMessage message = new ToAddressAndMessage();
+	
+	private String smtpHost = new SetProtocol().getSMTPHost();
+	private String altSmtpHost = new SetProtocol().getAltSMTPHost();
+	
+	private LoadInformation load = new LoadInformation();
+
+	/**
+	 * 
+	 * @param debug
+	 * @param mailingList
+	 * @throws Exception
+	 */
+	protected void sendEMails(boolean debug) throws Exception {
+
+		System.out.println("å¼€å§‹å�‘é€�é‚®ä»¶");
+
+		if (load.loadMailingList() != null) {
+			Iterator<?> iter = load.loadMailingList().iterator();
+			while (iter.hasNext()) {
+				message.configureEMail((HashMap<?, ?>) iter.next());
+				try {
+					if (message.toAddress.length() > 0) {
+						message.sendSMTPHostWay(smtpHost, debug);
+					}
+				} catch (Exception e) {
+					try {
+						message.sendAltSMTPHostWay(altSmtpHost, debug);
+					} catch (Exception e2) {
+						System.out.println("é€šè¿‡å¤‡ç”¨ SMTPæœ�åŠ¡å™¨å�‘é€�é‚®ä»¶å¤±è´¥: " + e2.getMessage());
+					}
+				}
+			}
+
+		}
+
+		else {
+			System.out.println("æ²¡æœ‰é‚®ä»¶å�‘é€�");
+
+		}
+
+	}
+	
+}
diff --git a/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/SetProtocol.java b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/SetProtocol.java
new file mode 100644
index 0000000000..98e0151fb6
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/SetProtocol.java	
@@ -0,0 +1,32 @@
+package main.java.com.coderising.ood.srp;
+
+public class SetProtocol {
+
+	private String smtpHost = null;
+	private String altSmtpHost = null;
+
+	private Configuration config;
+
+	protected void setProtocol() {
+		config = Configuration.getConfig();
+		setSMTPHost();
+		setAltSMTPHost();
+	}
+
+	private void setSMTPHost() {
+		smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+	}
+
+	private void setAltSMTPHost() {
+		altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+	}
+
+	protected String getSMTPHost() {
+		return smtpHost;
+	}
+
+	protected String getAltSMTPHost() {
+		return altSmtpHost;
+	}
+
+}
diff --git a/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ToAddressAndMessage.java b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ToAddressAndMessage.java
new file mode 100644
index 0000000000..c99bbc683b
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/ToAddressAndMessage.java	
@@ -0,0 +1,52 @@
+package main.java.com.coderising.ood.srp;
+
+import java.io.IOException;
+import java.util.HashMap;
+
+public class ToAddressAndMessage {
+
+	private String productDesc = new ProductInfo().getProductDesc();
+
+	protected String toAddress = null;
+	private	String fromAddress = new FromAddress().getFromAddress();
+
+	private String subject = null;
+	private String message = null;
+
+	private static final String EMAIL_KEY = "EMAIL";
+	private static final String NAME_KEY = "NAME";
+
+	/**
+	 * 
+	 * @param userInfo
+	 * @throws IOException
+	 */
+	protected void addressAndMessage(HashMap<?, ?> userInfo) throws IOException {
+		configureEMail(userInfo);
+		setMessage(userInfo);
+	}
+
+	protected void configureEMail(HashMap<?, ?> userInfo) throws IOException {
+
+		toAddress = (String) userInfo.get(EMAIL_KEY);
+		if (toAddress.length() > 0)
+			setMessage(userInfo);
+	}
+
+	protected void setMessage(HashMap<?, ?> userInfo) throws IOException {
+
+		String name = (String) userInfo.get(NAME_KEY);
+
+		subject = "æ‚¨å…³æ³¨çš„äº§å“�é™�ä»·äº†";
+		message = "å°Šæ•¬çš„ " + name + ", æ‚¨å…³æ³¨çš„äº§å“� " + productDesc + " é™�ä»·äº†ï¼Œæ¬¢è¿Žè´­ä¹°!";
+	}
+
+	protected void sendSMTPHostWay(String smtpHost, boolean debug) {
+		MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
+	}
+
+	protected void sendAltSMTPHostWay(String altSmtpHost, boolean debug) {
+		MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
+	}
+
+}
diff --git a/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/1398524980/second phase/once/ood_assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/1398524980/second phase/once/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 7d44bbb30bc627f96207c685eaaf42159bceff1c Mon Sep 17 00:00:00 2001
From: vvivey <kobako@qq.com>
Date: Sat, 17 Jun 2017 19:35:11 +0800
Subject: [PATCH 4/4] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BD=9C?=
 =?UTF-8?q?=E4=B8=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../second phase/once/ood_assignment/pom.xml  | 32 +++++++++++++++++++
 1 file changed, 32 insertions(+)
 create mode 100644 students/1398524980/second phase/once/ood_assignment/pom.xml

diff --git a/students/1398524980/second phase/once/ood_assignment/pom.xml b/students/1398524980/second phase/once/ood_assignment/pom.xml
new file mode 100644
index 0000000000..cac49a5328
--- /dev/null
+++ b/students/1398524980/second phase/once/ood_assignment/pom.xml	
@@ -0,0 +1,32 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>com.coderising</groupId>
+  <artifactId>ood-assignment</artifactId>
+  <version>0.0.1-SNAPSHOT</version>
+  <packaging>jar</packaging>
+
+  <name>ood-assignment</name>
+  <url>http://maven.apache.org</url>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <dependencies>
+    
+    <dependency>
+    	<groupId>junit</groupId>
+    	<artifactId>junit</artifactId>
+    	<version>4.12</version>
+    </dependency>
+    
+  </dependencies>
+  <repositories>
+        <repository>
+            <id>aliyunmaven</id>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+        </repository>
+    </repositories>
+</project>
