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,5 @@
package com.coderising.payroll;

public interface Affiliation {
public double calculateDeductions(Paycheck pc);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.coderising.payroll;

import java.util.Date;

public class Employee {
String id;
String name;
String address;
Affiliation affiliation;


PaymentClassification classification;
PaymentSchedule schedule;
PaymentMethod paymentMethod;

public Employee(String name, String address){
this.name = name;
this.address = address;
}
public boolean isPayDay(Date d) {
return false;
}

public Date getPayPeriodStartDate(Date d) {
return null;
}

public void payDay(Paycheck pc){

}

public void setClassification(PaymentClassification classification) {
this.classification = classification;
}
public void setSchedule(PaymentSchedule schedule) {
this.schedule = schedule;
}
public void setPaymentMethod(PaymentMethod paymentMethod) {
this.paymentMethod = paymentMethod;
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.coderising.payroll;

import java.util.Date;
import java.util.Map;

public class Paycheck {
private Date payPeriodStart;
private Date payPeriodEnd;
private double grossPay;
private double netPay;
private double deductions;

public Paycheck(Date payPeriodStart, Date payPeriodEnd){
this.payPeriodStart = payPeriodStart;
this.payPeriodEnd = payPeriodEnd;
}
public void setGrossPay(double grossPay) {
this.grossPay = grossPay;

}
public void setDeductions(double deductions) {
this.deductions = deductions;
}
public void setNetPay(double netPay){
this.netPay = netPay;
}
public Date getPayPeriodEndDate() {

return this.payPeriodEnd;
}
public Date getPayPeriodStartDate() {

return this.payPeriodStart;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.coderising.payroll;

public interface PaymentClassification {
public double calculatePay(Paycheck pc);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.coderising.payroll;

public interface PaymentMethod {
public void pay(Paycheck pc);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.coderising.payroll;

import java.util.Date;

public interface PaymentSchedule {
public boolean isPayDate(Date date);
public Date getPayPeriodStartDate( Date payPeriodEndDate);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.coderising.payroll;

import java.util.Date;

public class SalesReceipt {
private Date saleDate;
private double amount;
public Date getSaleDate() {
return saleDate;
}
public double getAmount() {
return amount;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.coderising.payroll;

import java.util.Date;

public class TimeCard {
private Date date;
private int hours;

public Date getDate() {
return date;
}
public int getHours() {
return hours;
}
}
32 changes: 32 additions & 0 deletions students/2756638003/srp/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>ds-assignment</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>ds-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,131 @@
package com.coderising.ood.srp;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import com.coderising.ood.srp.conf.Configuration;
import com.coderising.ood.srp.conf.ConfigurationKeys;
import com.coderising.ood.srp.conf.EmailStatus;
import com.coderising.ood.srp.domain.Product;
import com.coderising.ood.srp.domain.Subscriber;
import com.coderising.ood.srp.util.ConfigUtil;
import com.coderising.ood.srp.util.Email;
import com.coderising.ood.srp.util.MailUtil;
import com.coderising.ood.srp.util.SubscriberUtil;

public class PromotionMail {

protected String smtpHost = null;
protected String altSmtpHost = null;
protected String fromAddress = null;

private static Configuration config;

public static void main(String[] args) throws Exception {
File file = new File("XX/product_promotion.txt");
boolean emailDebug = false;
new PromotionMail(file, emailDebug);
}

/**
* 从配置文件中读取商品信息
*/
private List<Product> loadFile(File file) throws IOException {
Map<String, String> conf = ConfigUtil.readTextFile(file);
List<Product> productList = new ArrayList<Product>(16);
Set<Entry<String, String>> entrySet = conf.entrySet();
for (Entry<String, String> entry : entrySet) {
productList.add(new Product(entry.getKey(), entry.getValue()));
}
return productList;
}

/**
* 根据商品查询订阅的用户信息
*/
private List<Subscriber> querySubscribersFormFile(List<Product> productList)
throws IOException {
StringBuilder query = new StringBuilder(
"Select name from Subscriber where product_id in( ");
for (int i = 0, len = productList.size(); i < len - 1; i++) {
query.append(productList.get(i).getProductID() + " ,");
}
query.append(productList.get(productList.size() - 1).getProductID());
query.append(") and send_mail = ?");
return SubscriberUtil.loadSubscriberList(query.toString(),
EmailStatus.READY);
}

/**
* 根据订阅者信息生成邮件
*/
private Email generatorEmail(Subscriber subscriber, String host) {
String subject = "您关注的产品降价了";
String message = "尊敬的 " + subscriber.getName() + ", 您关注的产品 "
+ subscriber.getProduct().getProductDesc() + " 降价了,欢迎购买!";
return new Email(subscriber.getEmail(), fromAddress, subject, message,
host);
}

public PromotionMail(File file, boolean mailDebug) throws Exception {
config = new Configuration();
setSMTPHost();
setAltSMTPHost();
setFromAddress();
// 从配置文件中读取商品信息
List<Product> productList = loadFile(file);
// 根据商品查询订阅的用户信息
List<Subscriber> subscriberList = querySubscribersFormFile(productList);
// 发送邮件
sendEMails(mailDebug, subscriberList);
}

/**
* 发送邮件
*/
protected void sendEMails(boolean debug, List<Subscriber> subscriberList)
throws IOException {
System.out.println("开始发送邮件");
if (subscriberList != null && subscriberList.size() > 0) {
Iterator<Subscriber> iter = subscriberList.iterator();
Subscriber subscriber = null;

while (iter.hasNext()) {
subscriber = iter.next();
try {
MailUtil.sendEmail(generatorEmail(subscriber, smtpHost),
debug);
} catch (Exception e) {
try {
MailUtil.sendEmail(
generatorEmail(subscriber, altSmtpHost), debug);
} catch (Exception e2) {
System.out.println("通过备用 SMTP服务器发送邮件失败: "
+ e2.getMessage());
}
}
}
} else {
System.out.println("没有邮件发送");
}
}

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

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

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.conf;

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,31 @@
package com.coderising.ood.srp.conf;

/**
* 邮件发送状态常量
*/
public enum EmailStatus {
/**
* 未发送
*/
READY(0),
/**
* 已发送
*/
SEND(1),
/**
* 已查阅
*/
RECEIVED(2),
/**
* 被退回
*/
REJECTED(3);

@SuppressWarnings("unused")
private int value;

private EmailStatus(int value) {
this.value = value;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
P8756 iPhone8
P3946 XiaoMi10
P8904 Oppo R15
P4955 Vivo X20
Loading