Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.coderising.ood.ocp;

public class DateUtil {

public static String getCurrentDateAsString() {

return null;
}

}
Original file line number Diff line number Diff line change
@@ -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);
}
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.coderising.ood.ocp;

public class MailUtil {

public static void send(String logMsg) {
// TODO Auto-generated method stub

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.coderising.ood.ocp;

public class SMSUtil {

public static void send(String logMsg) {
// TODO Auto-generated method stub

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.coderising.ood.ocp.good;

public interface Formatter {

String format(String msg);

}
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.coderising.ood.ocp.good;

public class HtmlFormatter implements Formatter {

@Override
public String format(String msg) {

return null;
}

}
Original file line number Diff line number Diff line change
@@ -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)) ;
}


}

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.coderising.ood.ocp.good;

public class RawFormatter implements Formatter {

@Override
public String format(String msg) {

return null;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.coderising.ood.ocp.good;

public interface Sender {

void send(String msg);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.coderising.ood.srp;
import java.util.HashMap;
import java.util.Map;

public class Configuration {

static Map<String,String> configurations = new HashMap<>();
static{
configurations.put(ConfigurationKeys.SMTP_SERVER, "smtp.163.com");
configurations.put(ConfigurationKeys.ALT_SMTP_SERVER, "smtp1.163.com");
configurations.put(ConfigurationKeys.EMAIL_ADMIN, "admin@company.com");
}
/**
* 应该从配置文件读, 但是这里简化为直接从一个map 中去读
* @param key
* @return
*/
public String getProperty(String key) {

return configurations.get(key);
}

}
Original file line number Diff line number Diff line change
@@ -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";

}
Original file line number Diff line number Diff line change
@@ -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;
}
}
44 changes: 44 additions & 0 deletions students/583884851/src/main/java/com/coderising/ood/srp/Mail.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
P8756 iPhone8
P3946 XiaoMi10
P8904 Oppo_R15
P4955 Vivo_X20