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; + } +}