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); + +} 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/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/Configuration.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Configuration.java similarity index 93% rename from students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/Configuration.java rename to liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Configuration.java index 5c0697782a..55f0fad677 100644 --- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/Configuration.java +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/Configuration.java @@ -1,4 +1,4 @@ -package com.coderising.ood.srp.configure; +package com.coderising.ood.srp.good1; import java.util.HashMap; import java.util.Map; diff --git a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/ConfigurationKeys.java b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/ConfigurationKeys.java similarity index 83% rename from students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/ConfigurationKeys.java rename to liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/ConfigurationKeys.java index c9cfba4974..945db9004a 100644 --- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/configure/ConfigurationKeys.java +++ b/liuxin/ood/ood-assignment/src/main/java/com/coderising/ood/srp/good1/ConfigurationKeys.java @@ -1,4 +1,4 @@ -package com.coderising.ood.srp.configure; +package com.coderising.ood.srp.good1; public class ConfigurationKeys { 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; + } +} 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/config/Configuration.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/Configuration.java new file mode 100644 index 0000000000..7787c10665 --- /dev/null +++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/Configuration.java @@ -0,0 +1,25 @@ +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"); + 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/config/ConfigurationKeys.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/ConfigurationKeys.java new file mode 100644 index 0000000000..a3595d3252 --- /dev/null +++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/config/ConfigurationKeys.java @@ -0,0 +1,13 @@ +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"; + public static final String EMAIL_ADMIN = "email.admin"; + +} diff --git a/students/550727632/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/550727632/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/util/DBUtil.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/DBUtil.java new file mode 100644 index 0000000000..9d33edbd40 --- /dev/null +++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/DBUtil.java @@ -0,0 +1,25 @@ +package com.coderising.ood.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/550727632/src/main/java/com/coderising/ood/srp/FileUtil.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/FileUtil.java similarity index 57% rename from students/550727632/src/main/java/com/coderising/ood/srp/FileUtil.java rename to students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/FileUtil.java index 0054feb8e0..c57721fa6e 100644 --- a/students/550727632/src/main/java/com/coderising/ood/srp/FileUtil.java +++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/FileUtil.java @@ -1,28 +1,39 @@ -package com.coderising.ood.srp; + +package com.coderising.ood.util; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; -public class FileUtil { +import com.coderising.ood.model.Product; - public static Product readProductFile(File file) throws IOException { +/** + * @author 作者 E-mail: + * @version 创建时间:2017年6月17日 下午9:39:03 + * 类说明 + */ +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()); - + 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(); + } } - return product; } + } + \ No newline at end of file diff --git a/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/MailUtil.java b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/MailUtil.java new file mode 100644 index 0000000000..913f83aba9 --- /dev/null +++ b/students/136427763/ood/ood-assignment/src/main/java/com/coderising/ood/util/MailUtil.java @@ -0,0 +1,18 @@ +package com.coderising.ood.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()); + + } + + +} 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 + + } + +} 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/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/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/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 new file mode 100644 index 0000000000..9a072602b0 --- /dev/null +++ b/students/2842295913/ood-assignment/src/main/java/com/coderising/ood/ocp/Main.java @@ -0,0 +1,29 @@ +/** + * 版权 (c) 2017 palmshe.com + * 保留所有权利。 + */ +package com.coderising.ood.ocp; + +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: + * @author palmshe + * @date 2017年6月19日 下午9:36:38 + */ +public class Main { + + public static void main(String[] args) { + LogHandler sms= new SMSUtil(); + LogHandler mail= new MailUtil(); + LogFormatter date= new DateUtil(); + Logger log= new Logger(sms, date); + log.log("hello world"); + log= new Logger(mail, date); + log.log("hello coder"); + } +} 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); + } + +} 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); + } + +} 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/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/550727632/src/main/java/com/coderising/ood/ocp/util/DateUtil.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/DateUtil.java similarity index 93% rename from students/550727632/src/main/java/com/coderising/ood/ocp/util/DateUtil.java rename to students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/DateUtil.java index df8d253d9b..ca7b21a6dd 100644 --- a/students/550727632/src/main/java/com/coderising/ood/ocp/util/DateUtil.java +++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/DateUtil.java @@ -1,10 +1,10 @@ -package com.coderising.ood.ocp.util; - -public class DateUtil { - - public static String getCurrentDateAsString() { - - return null; - } - -} +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/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/MailUtil.java similarity index 93% rename from students/550727632/src/main/java/com/coderising/ood/ocp/util/MailUtil.java rename to students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/MailUtil.java index d95779b076..9191303993 100644 --- a/students/550727632/src/main/java/com/coderising/ood/ocp/util/MailUtil.java +++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/MailUtil.java @@ -1,10 +1,10 @@ -package com.coderising.ood.ocp.util; - -public class MailUtil { - - public static void send(String logMsg) { - // TODO Auto-generated method stub - - } - -} +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/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java similarity index 93% rename from students/550727632/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java rename to students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java index ae2359de92..9fab3d9430 100644 --- a/students/550727632/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java +++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/ocp/util/SMSUtil.java @@ -1,10 +1,10 @@ -package com.coderising.ood.ocp.util; - -public class SMSUtil { - - public static void send(String logMsg) { - // TODO Auto-generated method stub - - } - -} +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/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java similarity index 100% rename from students/550727632/src/main/java/com/coderising/ood/srp/Configuration.java rename to students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java diff --git a/students/550727632/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java similarity index 100% rename from students/550727632/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java rename to students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java 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..ebc3788355 --- /dev/null +++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailContent.java @@ -0,0 +1,64 @@ +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 String getSmtpHost() { + return smtpHost; + } + + public String getAltSmtpHost() { + return altSmtpHost; + } + + public String getFromAddress() { + return fromAddress; + } + + public String getSubject() { + return subject; + } + + public String getMessage() { + return message; + } + + public void setSMTPHost() { + smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER); + + } + + public void setAltSMTPHost() { + altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER); + } + + + public 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..75a52080ad --- /dev/null +++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java @@ -0,0 +1,74 @@ +package com.coderising.ood.srp; + +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; + +/** + * 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(); + + 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); + + } + 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/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/2831099157/ood-assignment/out/production/main/com/coderising/ood/srp/product_promotion.txt b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt similarity index 100% rename from students/2831099157/ood-assignment/out/production/main/com/coderising/ood/srp/product_promotion.txt rename to students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt 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..e70cdbe80a --- /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 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); + 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 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); + + 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 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); + + 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/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/dao/DBUtil.java b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java similarity index 56% rename from students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/dao/DBUtil.java rename to students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java index c0e7f6508d..a23198fcea 100644 --- a/students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/dao/DBUtil.java +++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/DBUtil.java @@ -1,6 +1,4 @@ -package com.coderising.ood.srp.dao; -import com.coderising.ood.srp.model.User; - +package com.coderising.ood.srp.util; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -12,14 +10,14 @@ public class DBUtil { * @param sql * @return */ - public static List query(String sql){ + 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); + 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..bd8dcba4f2 --- /dev/null +++ b/students/349184132/ood/ood-assignment/src/main/java/com/coderising/ood/srp/util/MailUtil.java @@ -0,0 +1,33 @@ +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()); + + } + + 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("发送邮件失败!"); + } + } + } + + +} 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/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/349184132/ood/ood-assignment/src/main/java/srp/product_promotion.txt similarity index 100% rename from students/2831099157/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt rename to students/349184132/ood/ood-assignment/src/main/java/srp/product_promotion.txt 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); + } + +} 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 @@ + 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/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/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/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 diff --git a/students/2831099157/ood-assignment/pom.xml b/students/597222089/ood/ood-assignment/pom.xml similarity index 100% rename from students/2831099157/ood-assignment/pom.xml rename to students/597222089/ood/ood-assignment/pom.xml 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; + } +} diff --git a/students/63072784/pom.xml b/students/63072784/pom.xml new file mode 100644 index 0000000000..4c78ba51ac --- /dev/null +++ b/students/63072784/pom.xml @@ -0,0 +1,16 @@ + + + 4.0.0 + + com.jimmykwong + coding2017 + 1.0-SNAPSHOT + + + 1.8 + 1.8 + + + \ 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..f6646fac14 --- /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(PromotionMail.class.getClassLoader().getResource("product_promotion.txt").toURI()); + 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 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