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
1 change: 1 addition & 0 deletions students/1398524980/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
作业
1 change: 1 addition & 0 deletions students/1398524980/second phase/once/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
面向对象设计
32 changes: 32 additions & 0 deletions students/1398524980/second phase/once/ood_assignment/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.coderising</groupId>
<artifactId>ood-assignment</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>ood-assignment</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>

</dependencies>
<repositories>
<repository>
<id>aliyunmaven</id>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
</repositories>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package main.java.com.coderising.ood.srp;

import java.util.HashMap;
import java.util.Map;

public class Configuration {

private static Configuration config;

static Map<String, String> configurations = new HashMap<>();
static {
configurations.put(ConfigurationKeys.SMTP_SERVER, "smtp.163.com");
configurations.put(ConfigurationKeys.ALT_SMTP_SERVER, "smtp1.163.com");
configurations.put(ConfigurationKeys.EMAIL_ADMIN, "admin@company.com");
}

private Configuration() {
}

protected static Configuration getConfig() {
return config;
}

/**
*
* @param key
* @return
*/
public String getProperty(String key) {

return configurations.get(key);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package main.java.com.coderising.ood.srp;

public class ConfigurationKeys {

public static final String SMTP_SERVER = "smtp.server";
public static final String ALT_SMTP_SERVER = "alt.smtp.server";
public static final String EMAIL_ADMIN = "email.admin";

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

public class DBUtil {

/**
* @param sql
* @return
*/
public static List<HashMap<String, String>> query(String sql){

List<HashMap<String, String>> userList = new ArrayList<HashMap<String, String>>();
for (int i = 1; i <= 3; i++) {
HashMap<String, String> userInfo = new HashMap<String, String>();
userInfo.put("NAME", "User" + i);
userInfo.put("EMAIL", "aa@bb.com");
userList.add(userInfo);
}

return userList;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package main.java.com.coderising.ood.srp;

public class FromAddress {

private String fromAddress = null;

protected void setFromAddress() {
fromAddress = Configuration.getConfig().getProperty(ConfigurationKeys.EMAIL_ADMIN);
}

public String getFromAddress() {
return fromAddress;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package main.java.com.coderising.ood.srp;

import java.util.List;

public class LoadInformation {

private String productID = new ProductInfo().getproductID();

private String sendMailQuery = null;

protected List<?> loadMailingList() throws Exception {
return DBUtil.query(this.sendMailQuery);
}

protected void setLoadQuery() throws Exception {

sendMailQuery = "Select name from subscriptions " + "where product_id= '" + productID + "' " + "and send_mail=1 ";

System.out.println("loadQuery set");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package main.java.com.coderising.ood.srp;

public class MailUtil {

public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
boolean debug) {
StringBuilder buffer = new StringBuilder();
buffer.append("From:").append(fromAddress).append("\n");
buffer.append("To:").append(toAddress).append("\n");
buffer.append("Subject:").append(subject).append("\n");
buffer.append("Content:").append(message).append("\n");
System.out.println(buffer.toString());

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package main.java.com.coderising.ood.srp;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class ProductInfo {

private String productID = null;
private String productDesc = null;

/**
*
* @throws IOException
*/
public void readProductInfo(String pomotionInfoAddress) throws IOException {

File f = new File(pomotionInfoAddress);

readFile(f);
}

private void readFile(File file) throws IOException {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
String temp = br.readLine();
String[] data = temp.split(" ");

productID = data[0];
productDesc = data[1];

System.out.println("��ƷID = " + productID + "\n");
System.out.println("��Ʒ���� = " + productDesc + "\n");

} catch (IOException e) {
throw new IOException(e.getMessage());
} finally {
br.close();
}
}

protected String getproductID() {
return productID;
}

protected String getProductDesc() {
return productDesc;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package main.java.com.coderising.ood.srp;

public class PromotionMail {

private static ProductInfo productInfo = new ProductInfo();
private static SetProtocol setprotocol = new SetProtocol();
private static LoadInformation loadInformation = new LoadInformation();
private static FromAddress fromAddress = new FromAddress();
private static SendEMails sendEmails = new SendEMails();

public static void main(String[] args) throws Exception {

boolean emailDebug = false;
new PromotionMail(emailDebug,
"C:\\Users\\123\\Documents\\workspace\\ood_assignment\\src\\com\\coderising\\ood\\srp\\product_promotion.txt");
}

PromotionMail(boolean emailDebug, String pomotionInfoAddress) throws Exception {

// ��ȡ��Ʒ��Ϣ
productInfo.readProductInfo(pomotionInfoAddress);

// ���÷��ͷ���Э��
setprotocol.setProtocol();

// ���ö�ȡ��Ϣ
loadInformation.setLoadQuery();

// ���÷��͵�ַ
fromAddress.setFromAddress();

// �����ʼ����� �� �����ʼ�
sendEmails.sendEMails(emailDebug);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package main.java.com.coderising.ood.srp;

import java.util.HashMap;
import java.util.Iterator;

public class SendEMails {

private ToAddressAndMessage message = new ToAddressAndMessage();

private String smtpHost = new SetProtocol().getSMTPHost();
private String altSmtpHost = new SetProtocol().getAltSMTPHost();

private LoadInformation load = new LoadInformation();

/**
*
* @param debug
* @param mailingList
* @throws Exception
*/
protected void sendEMails(boolean debug) throws Exception {

System.out.println("开始发送邮件");

if (load.loadMailingList() != null) {
Iterator<?> iter = load.loadMailingList().iterator();
while (iter.hasNext()) {
message.configureEMail((HashMap<?, ?>) iter.next());
try {
if (message.toAddress.length() > 0) {
message.sendSMTPHostWay(smtpHost, debug);
}
} catch (Exception e) {
try {
message.sendAltSMTPHostWay(altSmtpHost, debug);
} catch (Exception e2) {
System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
}
}
}

}

else {
System.out.println("没有邮件发送");

}

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package main.java.com.coderising.ood.srp;

public class SetProtocol {

private String smtpHost = null;
private String altSmtpHost = null;

private Configuration config;

protected void setProtocol() {
config = Configuration.getConfig();
setSMTPHost();
setAltSMTPHost();
}

private void setSMTPHost() {
smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
}

private void setAltSMTPHost() {
altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
}

protected String getSMTPHost() {
return smtpHost;
}

protected String getAltSMTPHost() {
return altSmtpHost;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package main.java.com.coderising.ood.srp;

import java.io.IOException;
import java.util.HashMap;

public class ToAddressAndMessage {

private String productDesc = new ProductInfo().getProductDesc();

protected String toAddress = null;
private String fromAddress = new FromAddress().getFromAddress();

private String subject = null;
private String message = null;

private static final String EMAIL_KEY = "EMAIL";
private static final String NAME_KEY = "NAME";

/**
*
* @param userInfo
* @throws IOException
*/
protected void addressAndMessage(HashMap<?, ?> userInfo) throws IOException {
configureEMail(userInfo);
setMessage(userInfo);
}

protected void configureEMail(HashMap<?, ?> userInfo) throws IOException {

toAddress = (String) userInfo.get(EMAIL_KEY);
if (toAddress.length() > 0)
setMessage(userInfo);
}

protected void setMessage(HashMap<?, ?> userInfo) throws IOException {

String name = (String) userInfo.get(NAME_KEY);

subject = "您关注的产品降价了";
message = "尊敬的 " + name + ", 您关注的产品 " + productDesc + " 降价了,欢迎购买!";
}

protected void sendSMTPHostWay(String smtpHost, boolean debug) {
MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
}

protected void sendAltSMTPHostWay(String altSmtpHost, boolean debug) {
MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
P8756 iPhone8
P3946 XiaoMi10
P8904 Oppo_R15
P4955 Vivo_X20