readToStringList(InputStream inputStream) {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new InputStreamReader(inputStream));
+ return br.lines().collect(Collectors.toList());
+ } finally {
+ close(br);
+ }
+
+ }
+
}
diff --git a/students/1204187480/code/homework/common/src/test/java/com/coding/common/util/IOUtils2Test.java b/students/1204187480/code/homework/common/src/test/java/com/coding/common/util/IOUtils2Test.java
new file mode 100644
index 0000000000..6870919037
--- /dev/null
+++ b/students/1204187480/code/homework/common/src/test/java/com/coding/common/util/IOUtils2Test.java
@@ -0,0 +1,26 @@
+package com.coding.common.util;
+
+import org.junit.Test;
+
+import java.util.List;
+
+import static com.coding.common.util.FileUtils2.openStream;
+import static com.coding.common.util.IOUtils2.readToStringList;
+import static org.junit.Assert.*;
+
+/**
+ *
+ *
+ *
+ * @author raoxiang
+ * @version 6/13/17
+ * @since 1.8
+ */
+public class IOUtils2Test {
+ @Test
+ public void readToStringListTest() throws Exception {
+ List poms = readToStringList(openStream("test.json"));
+ System.out.println(poms);
+ }
+
+}
\ No newline at end of file
diff --git a/students/1204187480/code/homework/common/src/test/resources/test.json b/students/1204187480/code/homework/common/src/test/resources/test.json
new file mode 100644
index 0000000000..ccc0682ac2
--- /dev/null
+++ b/students/1204187480/code/homework/common/src/test/resources/test.json
@@ -0,0 +1,4 @@
+{
+ "key1": "value1"
+ , "key2": "value2"
+}
\ No newline at end of file
From f0b779eaddc44cbfda1e408ea577b1ad2591205c Mon Sep 17 00:00:00 2001
From: jyp
Date: Tue, 13 Jun 2017 11:41:20 +0800
Subject: [PATCH 034/332] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
第一次
---
.../data-structure/build.gradle | 30 ++++
.../gradle/wrapper/gradle-wrapper.properties | 6 +
.../data-structure/data-structure/gradlew | 169 ++++++++++++++++++
.../data-structure/data-structure/gradlew.bat | 84 +++++++++
.../data-structure/settings.gradle | 19 ++
.../data-structure/src/main/java/Library.java | 11 ++
.../src/test/java/LibraryTest.java | 15 ++
students/992331664/ood/ood/build.gradle | 30 ++++
.../gradle/wrapper/gradle-wrapper.properties | 6 +
students/992331664/ood/ood/gradlew | 169 ++++++++++++++++++
students/992331664/ood/ood/gradlew.bat | 84 +++++++++
students/992331664/ood/ood/settings.gradle | 19 ++
.../ood/ood/src/main/java/Library.java | 11 ++
.../ood/ood/src/test/java/LibraryTest.java | 15 ++
14 files changed, 668 insertions(+)
create mode 100644 students/992331664/data-structure/data-structure/build.gradle
create mode 100644 students/992331664/data-structure/data-structure/gradle/wrapper/gradle-wrapper.properties
create mode 100644 students/992331664/data-structure/data-structure/gradlew
create mode 100644 students/992331664/data-structure/data-structure/gradlew.bat
create mode 100644 students/992331664/data-structure/data-structure/settings.gradle
create mode 100644 students/992331664/data-structure/data-structure/src/main/java/Library.java
create mode 100644 students/992331664/data-structure/data-structure/src/test/java/LibraryTest.java
create mode 100644 students/992331664/ood/ood/build.gradle
create mode 100644 students/992331664/ood/ood/gradle/wrapper/gradle-wrapper.properties
create mode 100644 students/992331664/ood/ood/gradlew
create mode 100644 students/992331664/ood/ood/gradlew.bat
create mode 100644 students/992331664/ood/ood/settings.gradle
create mode 100644 students/992331664/ood/ood/src/main/java/Library.java
create mode 100644 students/992331664/ood/ood/src/test/java/LibraryTest.java
diff --git a/students/992331664/data-structure/data-structure/build.gradle b/students/992331664/data-structure/data-structure/build.gradle
new file mode 100644
index 0000000000..588e5e86aa
--- /dev/null
+++ b/students/992331664/data-structure/data-structure/build.gradle
@@ -0,0 +1,30 @@
+/*
+ * This build file was auto generated by running the Gradle 'init' task
+ * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
+ *
+ * This generated file contains a sample Java project to get you started.
+ * For more details take a look at the Java Quickstart chapter in the Gradle
+ * user guide available at https://docs.gradle.org/3.0/userguide/tutorial_java_projects.html
+ */
+
+// Apply the java plugin to add support for Java
+apply plugin: 'java'
+
+// In this section you declare where to find the dependencies of your project
+repositories {
+ // Use 'jcenter' for resolving your dependencies.
+ // You can declare any Maven/Ivy/file repository here.
+ jcenter()
+}
+
+// In this section you declare the dependencies for your production and test code
+dependencies {
+ // The production code uses the SLF4J logging API at compile time
+ compile 'org.slf4j:slf4j-api:1.7.21'
+
+ // Declare the dependency for your favourite test framework you want to use in your tests.
+ // TestNG is also supported by the Gradle Test task. Just change the
+ // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
+ // 'test.useTestNG()' to your build script.
+ testCompile 'junit:junit:4.12'
+}
diff --git a/students/992331664/data-structure/data-structure/gradle/wrapper/gradle-wrapper.properties b/students/992331664/data-structure/data-structure/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000..d4aaec595d
--- /dev/null
+++ b/students/992331664/data-structure/data-structure/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Jun 13 11:30:56 CST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.0-bin.zip
diff --git a/students/992331664/data-structure/data-structure/gradlew b/students/992331664/data-structure/data-structure/gradlew
new file mode 100644
index 0000000000..9aa616c273
--- /dev/null
+++ b/students/992331664/data-structure/data-structure/gradlew
@@ -0,0 +1,169 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/students/992331664/data-structure/data-structure/gradlew.bat b/students/992331664/data-structure/data-structure/gradlew.bat
new file mode 100644
index 0000000000..f9553162f1
--- /dev/null
+++ b/students/992331664/data-structure/data-structure/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/students/992331664/data-structure/data-structure/settings.gradle b/students/992331664/data-structure/data-structure/settings.gradle
new file mode 100644
index 0000000000..e5c7e27790
--- /dev/null
+++ b/students/992331664/data-structure/data-structure/settings.gradle
@@ -0,0 +1,19 @@
+/*
+ * This settings file was auto generated by the Gradle buildInit task
+ * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
+ *
+ * The settings file is used to specify which projects to include in your build.
+ * In a single project build this file can be empty or even removed.
+ *
+ * Detailed information about configuring a multi-project build in Gradle can be found
+ * in the user guide at https://docs.gradle.org/3.0/userguide/multi_project_builds.html
+ */
+
+/*
+// To declare projects as part of a multi-project build use the 'include' method
+include 'shared'
+include 'api'
+include 'services:webservice'
+*/
+
+rootProject.name = 'data-structure'
diff --git a/students/992331664/data-structure/data-structure/src/main/java/Library.java b/students/992331664/data-structure/data-structure/src/main/java/Library.java
new file mode 100644
index 0000000000..3a465d0ed5
--- /dev/null
+++ b/students/992331664/data-structure/data-structure/src/main/java/Library.java
@@ -0,0 +1,11 @@
+/*
+ * This Java source file was auto generated by running 'gradle buildInit --type java-library'
+ * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
+ *
+ * @author gant, @date 17-6-13 上午11:30
+ */
+public class Library {
+ public boolean someLibraryMethod() {
+ return true;
+ }
+}
diff --git a/students/992331664/data-structure/data-structure/src/test/java/LibraryTest.java b/students/992331664/data-structure/data-structure/src/test/java/LibraryTest.java
new file mode 100644
index 0000000000..da00ff25a0
--- /dev/null
+++ b/students/992331664/data-structure/data-structure/src/test/java/LibraryTest.java
@@ -0,0 +1,15 @@
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/*
+ * This Java source file was auto generated by running 'gradle init --type java-library'
+ * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
+ *
+ * @author gant, @date 17-6-13 上午11:30
+ */
+public class LibraryTest {
+ @Test public void testSomeLibraryMethod() {
+ Library classUnderTest = new Library();
+ assertTrue("someLibraryMethod should return 'true'", classUnderTest.someLibraryMethod());
+ }
+}
diff --git a/students/992331664/ood/ood/build.gradle b/students/992331664/ood/ood/build.gradle
new file mode 100644
index 0000000000..588e5e86aa
--- /dev/null
+++ b/students/992331664/ood/ood/build.gradle
@@ -0,0 +1,30 @@
+/*
+ * This build file was auto generated by running the Gradle 'init' task
+ * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
+ *
+ * This generated file contains a sample Java project to get you started.
+ * For more details take a look at the Java Quickstart chapter in the Gradle
+ * user guide available at https://docs.gradle.org/3.0/userguide/tutorial_java_projects.html
+ */
+
+// Apply the java plugin to add support for Java
+apply plugin: 'java'
+
+// In this section you declare where to find the dependencies of your project
+repositories {
+ // Use 'jcenter' for resolving your dependencies.
+ // You can declare any Maven/Ivy/file repository here.
+ jcenter()
+}
+
+// In this section you declare the dependencies for your production and test code
+dependencies {
+ // The production code uses the SLF4J logging API at compile time
+ compile 'org.slf4j:slf4j-api:1.7.21'
+
+ // Declare the dependency for your favourite test framework you want to use in your tests.
+ // TestNG is also supported by the Gradle Test task. Just change the
+ // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
+ // 'test.useTestNG()' to your build script.
+ testCompile 'junit:junit:4.12'
+}
diff --git a/students/992331664/ood/ood/gradle/wrapper/gradle-wrapper.properties b/students/992331664/ood/ood/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000..5a2cbbeeab
--- /dev/null
+++ b/students/992331664/ood/ood/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Jun 13 11:30:26 CST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.0-bin.zip
diff --git a/students/992331664/ood/ood/gradlew b/students/992331664/ood/ood/gradlew
new file mode 100644
index 0000000000..9aa616c273
--- /dev/null
+++ b/students/992331664/ood/ood/gradlew
@@ -0,0 +1,169 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [[ "$(uname)" == "Darwin" ]] && [[ "$HOME" == "$PWD" ]]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/students/992331664/ood/ood/gradlew.bat b/students/992331664/ood/ood/gradlew.bat
new file mode 100644
index 0000000000..f9553162f1
--- /dev/null
+++ b/students/992331664/ood/ood/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/students/992331664/ood/ood/settings.gradle b/students/992331664/ood/ood/settings.gradle
new file mode 100644
index 0000000000..f98d8fb6d8
--- /dev/null
+++ b/students/992331664/ood/ood/settings.gradle
@@ -0,0 +1,19 @@
+/*
+ * This settings file was auto generated by the Gradle buildInit task
+ * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
+ *
+ * The settings file is used to specify which projects to include in your build.
+ * In a single project build this file can be empty or even removed.
+ *
+ * Detailed information about configuring a multi-project build in Gradle can be found
+ * in the user guide at https://docs.gradle.org/3.0/userguide/multi_project_builds.html
+ */
+
+/*
+// To declare projects as part of a multi-project build use the 'include' method
+include 'shared'
+include 'api'
+include 'services:webservice'
+*/
+
+rootProject.name = 'ood'
diff --git a/students/992331664/ood/ood/src/main/java/Library.java b/students/992331664/ood/ood/src/main/java/Library.java
new file mode 100644
index 0000000000..3a465d0ed5
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/Library.java
@@ -0,0 +1,11 @@
+/*
+ * This Java source file was auto generated by running 'gradle buildInit --type java-library'
+ * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
+ *
+ * @author gant, @date 17-6-13 上午11:30
+ */
+public class Library {
+ public boolean someLibraryMethod() {
+ return true;
+ }
+}
diff --git a/students/992331664/ood/ood/src/test/java/LibraryTest.java b/students/992331664/ood/ood/src/test/java/LibraryTest.java
new file mode 100644
index 0000000000..da00ff25a0
--- /dev/null
+++ b/students/992331664/ood/ood/src/test/java/LibraryTest.java
@@ -0,0 +1,15 @@
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/*
+ * This Java source file was auto generated by running 'gradle init --type java-library'
+ * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
+ *
+ * @author gant, @date 17-6-13 上午11:30
+ */
+public class LibraryTest {
+ @Test public void testSomeLibraryMethod() {
+ Library classUnderTest = new Library();
+ assertTrue("someLibraryMethod should return 'true'", classUnderTest.someLibraryMethod());
+ }
+}
From a98b1029eb11c8f2c136f693677990f67c9e5f8c Mon Sep 17 00:00:00 2001
From: orajavac
Date: Tue, 13 Jun 2017 11:41:23 +0800
Subject: [PATCH 035/332] 20170613_1140 readme.md
---
students/562768642/readme.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 students/562768642/readme.md
diff --git a/students/562768642/readme.md b/students/562768642/readme.md
new file mode 100644
index 0000000000..97979001f4
--- /dev/null
+++ b/students/562768642/readme.md
@@ -0,0 +1 @@
+最新提交
\ No newline at end of file
From 4a2ca08c0124785c92915d7a9b8b2515161c40a1 Mon Sep 17 00:00:00 2001
From: orajavac
Date: Tue, 13 Jun 2017 11:45:39 +0800
Subject: [PATCH 036/332] =?UTF-8?q?20170613=5F1145=20=E6=B5=8B=E8=AF=95?=
=?UTF-8?q?=E4=B8=80=E4=B8=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
students/562768642/readme.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/students/562768642/readme.md b/students/562768642/readme.md
index 97979001f4..f363197d69 100644
--- a/students/562768642/readme.md
+++ b/students/562768642/readme.md
@@ -1 +1 @@
-最新提交
\ No newline at end of file
+最新提交,测试一下
\ No newline at end of file
From 9d909c569f737d238c3272f854a7f374ba96486a Mon Sep 17 00:00:00 2001
From: orajavac
Date: Tue, 13 Jun 2017 11:52:56 +0800
Subject: [PATCH 037/332] =?UTF-8?q?20170613=5F1152=20=E6=B5=8B=E8=AF=95?=
=?UTF-8?q?=E6=8F=90=E4=BA=A4java=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../coding2017/ood/srp/Configuration.java | 23 +++++++++++++++++++
1 file changed, 23 insertions(+)
create mode 100644 students/562768642/src/com/github/orajavac/coding2017/ood/srp/Configuration.java
diff --git a/students/562768642/src/com/github/orajavac/coding2017/ood/srp/Configuration.java b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/Configuration.java
new file mode 100644
index 0000000000..465fe66675
--- /dev/null
+++ b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/Configuration.java
@@ -0,0 +1,23 @@
+package com.github.orajavac.coding2017.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);
+ }
+
+}
From 82d9a01304f0be5a824719a6136a9beff425e006 Mon Sep 17 00:00:00 2001
From: jyp
Date: Tue, 13 Jun 2017 11:59:35 +0800
Subject: [PATCH 038/332] =?UTF-8?q?=E5=87=86=E5=A4=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../data-structure/src/main/java/Library.java | 11 --
.../src/test/java/LibraryTest.java | 15 --
.../ood/ood/src/main/java/Library.java | 11 --
.../com/coderising/ood/srp/Configuration.java | 23 +++
.../coderising/ood/srp/ConfigurationKeys.java | 9 +
.../java/com/coderising/ood/srp/DBUtil.java | 27 +++
.../java/com/coderising/ood/srp/MailUtil.java | 18 ++
.../com/coderising/ood/srp/PromotionMail.java | 162 ++++++++++++++++++
.../coderising/ood/srp/product_promotion.txt | 4 +
.../ood/ood/src/test/java/LibraryTest.java | 15 --
10 files changed, 243 insertions(+), 52 deletions(-)
delete mode 100644 students/992331664/data-structure/data-structure/src/main/java/Library.java
delete mode 100644 students/992331664/data-structure/data-structure/src/test/java/LibraryTest.java
delete mode 100644 students/992331664/ood/ood/src/main/java/Library.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/Configuration.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/DBUtil.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/MailUtil.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/PromotionMail.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/product_promotion.txt
delete mode 100644 students/992331664/ood/ood/src/test/java/LibraryTest.java
diff --git a/students/992331664/data-structure/data-structure/src/main/java/Library.java b/students/992331664/data-structure/data-structure/src/main/java/Library.java
deleted file mode 100644
index 3a465d0ed5..0000000000
--- a/students/992331664/data-structure/data-structure/src/main/java/Library.java
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * This Java source file was auto generated by running 'gradle buildInit --type java-library'
- * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
- *
- * @author gant, @date 17-6-13 上午11:30
- */
-public class Library {
- public boolean someLibraryMethod() {
- return true;
- }
-}
diff --git a/students/992331664/data-structure/data-structure/src/test/java/LibraryTest.java b/students/992331664/data-structure/data-structure/src/test/java/LibraryTest.java
deleted file mode 100644
index da00ff25a0..0000000000
--- a/students/992331664/data-structure/data-structure/src/test/java/LibraryTest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-/*
- * This Java source file was auto generated by running 'gradle init --type java-library'
- * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
- *
- * @author gant, @date 17-6-13 上午11:30
- */
-public class LibraryTest {
- @Test public void testSomeLibraryMethod() {
- Library classUnderTest = new Library();
- assertTrue("someLibraryMethod should return 'true'", classUnderTest.someLibraryMethod());
- }
-}
diff --git a/students/992331664/ood/ood/src/main/java/Library.java b/students/992331664/ood/ood/src/main/java/Library.java
deleted file mode 100644
index 3a465d0ed5..0000000000
--- a/students/992331664/ood/ood/src/main/java/Library.java
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * This Java source file was auto generated by running 'gradle buildInit --type java-library'
- * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
- *
- * @author gant, @date 17-6-13 上午11:30
- */
-public class Library {
- public boolean someLibraryMethod() {
- return true;
- }
-}
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/Configuration.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/Configuration.java
new file mode 100644
index 0000000000..f328c1816a
--- /dev/null
+++ b/students/992331664/ood/ood/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/992331664/ood/ood/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..8695aed644
--- /dev/null
+++ b/students/992331664/ood/ood/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/992331664/ood/ood/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..7597905da1
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/DBUtil.java
@@ -0,0 +1,27 @@
+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/992331664/ood/ood/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..9f9e749af7
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/MailUtil.java
@@ -0,0 +1,18 @@
+package com.coderising.ood.srp;
+
+public class MailUtil {
+
+ public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
+ boolean debug) {
+ //假装发了一封邮件
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("From:").append(fromAddress).append("\n");
+ buffer.append("To:").append(toAddress).append("\n");
+ buffer.append("Subject:").append(subject).append("\n");
+ buffer.append("Content:").append(message).append("\n");
+ System.out.println(buffer.toString());
+
+ }
+
+
+}
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..d98b32e7fc
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -0,0 +1,162 @@
+package com.coderising.ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+public class PromotionMail {
+
+ protected String sendMailQuery = null;
+
+ protected String smtpHost = null;
+ protected String altSmtpHost = null;
+ protected String fromAddress = null;
+ protected String toAddress = null;
+ protected String subject = null;
+ protected String message = null;
+
+ protected String productID = null;
+ protected String productDesc = null;
+
+ private static Configuration config;
+
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+ public static void main(String[] args) throws Exception {
+
+ File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+ boolean emailDebug = false;
+
+ PromotionMail pe = new PromotionMail(f, emailDebug);
+
+ }
+
+ public PromotionMail(File file, boolean mailDebug) throws Exception {
+
+ // 读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
+ readFile(file);
+
+ config = new Configuration();
+
+ setSMTPHost();
+ setAltSMTPHost();
+
+ setFromAddress();
+
+ setLoadQuery();
+
+ sendEMails(mailDebug, loadMailingList());
+
+ }
+
+ protected void setProductID(String productID) {
+ this.productID = productID;
+
+ }
+
+ protected String getproductID() {
+ return productID;
+ }
+
+ protected void setLoadQuery() throws Exception {
+
+ sendMailQuery = "Select name from subscriptions " + "where product_id= '" + productID + "' "
+ + "and send_mail=1 ";
+
+ System.out.println("loadQuery set");
+ }
+
+ protected void setSMTPHost() {
+ smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ }
+
+ protected void setAltSMTPHost() {
+ altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+
+ }
+
+ protected void setFromAddress() {
+ fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+ protected void setMessage(HashMap userInfo) throws IOException {
+
+ String name = (String) userInfo.get(NAME_KEY);
+
+ subject = "您关注的产品降价了";
+ message = "尊敬的 " + name + ", 您关注的产品 " + productDesc + " 降价了,欢迎购买!";
+
+ }
+
+ protected void readFile(File file) throws IOException // @02C
+ {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+
+ setProductID(data[0]);
+ setProductDesc(data[1]);
+
+ System.out.println("产品ID = " + productID + "\n");
+ System.out.println("产品描述 = " + productDesc + "\n");
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ }
+
+ private void setProductDesc(String desc) {
+ this.productDesc = desc;
+ }
+
+ protected void configureEMail(HashMap userInfo) throws IOException {
+ toAddress = (String) userInfo.get(EMAIL_KEY);
+ if (toAddress.length() > 0)
+ setMessage(userInfo);
+ }
+
+ protected List loadMailingList() throws Exception {
+ return DBUtil.query(this.sendMailQuery);
+ }
+
+ protected void sendEMails(boolean debug, List mailingList) throws IOException {
+
+ System.out.println("开始发送邮件");
+
+ if (mailingList != null) {
+ Iterator iter = mailingList.iterator();
+ while (iter.hasNext()) {
+ configureEMail((HashMap) iter.next());
+ try {
+ if (toAddress.length() > 0)
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
+ } catch (Exception e) {
+
+ try {
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
+
+ } catch (Exception e2) {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+ }
+ }
+ }
+
+ }
+
+ else {
+ System.out.println("没有邮件发送");
+
+ }
+
+ }
+}
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/992331664/ood/ood/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/992331664/ood/ood/src/test/java/LibraryTest.java b/students/992331664/ood/ood/src/test/java/LibraryTest.java
deleted file mode 100644
index da00ff25a0..0000000000
--- a/students/992331664/ood/ood/src/test/java/LibraryTest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-/*
- * This Java source file was auto generated by running 'gradle init --type java-library'
- * by 'gant' at '17-6-13 上午11:30' with Gradle 3.0
- *
- * @author gant, @date 17-6-13 上午11:30
- */
-public class LibraryTest {
- @Test public void testSomeLibraryMethod() {
- Library classUnderTest = new Library();
- assertTrue("someLibraryMethod should return 'true'", classUnderTest.someLibraryMethod());
- }
-}
From 9b48654b4b35e9cad8f4835869d6161d84fa0968 Mon Sep 17 00:00:00 2001
From: yangdd1205
Date: Tue, 13 Jun 2017 13:10:44 +0800
Subject: [PATCH 039/332] srp
---
students/1049843090/ood/build.gradle | 28 +++
students/1049843090/ood/settings.gradle | 2 +
.../com/coderising/ood/srp/Configuration.java | 23 +++
.../coderising/ood/srp/ConfigurationKeys.java | 9 +
.../java/com/coderising/ood/srp/DBUtil.java | 25 +++
.../java/com/coderising/ood/srp/MailUtil.java | 18 ++
.../com/coderising/ood/srp/PromotionMail.java | 181 ++++++++++++++++++
.../coderising/ood/srp/product_promotion.txt | 4 +
8 files changed, 290 insertions(+)
create mode 100644 students/1049843090/ood/build.gradle
create mode 100644 students/1049843090/ood/settings.gradle
create mode 100644 students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/Configuration.java
create mode 100644 students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/ConfigurationKeys.java
create mode 100644 students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/DBUtil.java
create mode 100644 students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/MailUtil.java
create mode 100644 students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/PromotionMail.java
create mode 100644 students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/product_promotion.txt
diff --git a/students/1049843090/ood/build.gradle b/students/1049843090/ood/build.gradle
new file mode 100644
index 0000000000..adca958b35
--- /dev/null
+++ b/students/1049843090/ood/build.gradle
@@ -0,0 +1,28 @@
+group 'com.yangdd'
+version '1.0-SNAPSHOT'
+description = '面向对象设计'
+
+apply plugin: 'java'
+
+sourceCompatibility = 1.8
+
+repositories {
+ mavenLocal()
+ mavenCentral()
+}
+
+//项目布局,下面是Java plugin的默认布局
+sourceSets {
+ main.java.srcDir('src/main/java')
+ main.resources.srcDir('src/main/resources')
+ test.java.srcDir('src/test/java')
+ test.resources.srcDir('src/test/resources')
+}
+
+dependencies {
+ testCompile('junit:junit:4.12')
+}
+
+tasks.withType(JavaCompile) {
+ options.encoding = 'UTF-8'
+}
\ No newline at end of file
diff --git a/students/1049843090/ood/settings.gradle b/students/1049843090/ood/settings.gradle
new file mode 100644
index 0000000000..4ffc61b06a
--- /dev/null
+++ b/students/1049843090/ood/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = 'ood'
+
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/Configuration.java b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/Configuration.java
new file mode 100644
index 0000000000..d1209d44e4
--- /dev/null
+++ b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/Configuration.java
@@ -0,0 +1,23 @@
+package java.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);
+ }
+
+}
\ No newline at end of file
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..5f4b048948
--- /dev/null
+++ b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/ConfigurationKeys.java
@@ -0,0 +1,9 @@
+package 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";
+
+}
\ No newline at end of file
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/DBUtil.java b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..299aa8bc46
--- /dev/null
+++ b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/DBUtil.java
@@ -0,0 +1,25 @@
+package 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 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;
+ }
+}
\ No newline at end of file
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/MailUtil.java b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..3c75104aeb
--- /dev/null
+++ b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/MailUtil.java
@@ -0,0 +1,18 @@
+package 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());
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/PromotionMail.java b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..1a3d4a6c15
--- /dev/null
+++ b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/PromotionMail.java
@@ -0,0 +1,181 @@
+package java.com.coderising.ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+public class PromotionMail {
+
+
+ protected String sendMailQuery = null;
+
+
+ protected String smtpHost = null;
+ protected String altSmtpHost = null;
+ protected String fromAddress = null;
+ protected String toAddress = null;
+ protected String subject = null;
+ protected String message = null;
+
+ protected String productID = null;
+ protected String productDesc = null;
+
+ private static Configuration config;
+
+
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+
+ public static void main(String[] args) throws Exception {
+
+ File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+ boolean emailDebug = false;
+
+ PromotionMail pe = new PromotionMail(f, emailDebug);
+
+ }
+
+
+ public PromotionMail(File file, boolean mailDebug) throws Exception {
+
+ //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
+ readFile(file);
+
+
+ config = new Configuration();
+
+ setSMTPHost();
+ setAltSMTPHost();
+
+
+ setFromAddress();
+
+
+ setLoadQuery();
+
+ sendEMails(mailDebug, loadMailingList());
+
+
+ }
+
+
+ protected void setProductID(String productID) {
+ this.productID = productID;
+
+ }
+
+ protected String getproductID() {
+ return productID;
+ }
+
+ protected void setLoadQuery() throws Exception {
+
+ sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + productID + "' "
+ + "and send_mail=1 ";
+
+
+ System.out.println("loadQuery set");
+ }
+
+
+ protected void setSMTPHost() {
+ smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ }
+
+
+ protected void setAltSMTPHost() {
+ altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+
+ }
+
+
+ protected void setFromAddress() {
+ fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+ protected void setMessage(HashMap userInfo) throws IOException {
+
+ String name = (String) userInfo.get(NAME_KEY);
+
+ subject = "您关注的产品降价了";
+ message = "尊敬的 " + name + ", 您关注的产品 " + productDesc + " 降价了,欢迎购买!";
+
+
+ }
+
+
+ protected void readFile(File file) throws IOException // @02C
+ {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+
+ setProductID(data[0]);
+ setProductDesc(data[1]);
+
+ System.out.println("产品ID = " + productID + "\n");
+ System.out.println("产品描述 = " + productDesc + "\n");
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ }
+
+ private void setProductDesc(String desc) {
+ this.productDesc = desc;
+ }
+
+
+ protected void configureEMail(HashMap userInfo) throws IOException {
+ toAddress = (String) userInfo.get(EMAIL_KEY);
+ if (toAddress.length() > 0)
+ setMessage(userInfo);
+ }
+
+ protected List loadMailingList() throws Exception {
+ return DBUtil.query(this.sendMailQuery);
+ }
+
+
+ protected void sendEMails(boolean debug, List mailingList) throws IOException {
+
+ System.out.println("开始发送邮件");
+
+
+ if (mailingList != null) {
+ Iterator iter = mailingList.iterator();
+ while (iter.hasNext()) {
+ configureEMail((HashMap) iter.next());
+ try {
+ if (toAddress.length() > 0)
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
+ } catch (Exception e) {
+
+ try {
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
+
+ } catch (Exception e2) {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+ }
+ }
+ }
+
+
+ } else {
+ System.out.println("没有邮件发送");
+
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/product_promotion.txt b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
From a9a1e31781560531d48394707cc8d2e0b0f714b6 Mon Sep 17 00:00:00 2001
From: mddonly <275677638@qq.com>
Date: Tue, 13 Jun 2017 13:20:49 +0800
Subject: [PATCH 040/332] first
---
students/275677638/README.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 students/275677638/README.md
diff --git a/students/275677638/README.md b/students/275677638/README.md
new file mode 100644
index 0000000000..2e9f085533
--- /dev/null
+++ b/students/275677638/README.md
@@ -0,0 +1 @@
+愿意自荐代码的,可以每个人一个目录 以自己的QQ号命名 ,把自荐的代码放到里边去
From 6e88a41a17fd2046eef43d80a38d6043fd3d9ca8 Mon Sep 17 00:00:00 2001
From: mddonly <275677638@qq.com>
Date: Tue, 13 Jun 2017 13:52:05 +0800
Subject: [PATCH 041/332] new line
---
students/275677638/1.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 students/275677638/1.txt
diff --git a/students/275677638/1.txt b/students/275677638/1.txt
new file mode 100644
index 0000000000..e69de29bb2
From b20f426ea7c341b6fa90b91e072ce67f3179a8da Mon Sep 17 00:00:00 2001
From: mddonly <275677638@qq.com>
Date: Tue, 13 Jun 2017 13:52:45 +0800
Subject: [PATCH 042/332] mod
---
students/275677638/README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/students/275677638/README.md b/students/275677638/README.md
index 2e9f085533..aa7a31b814 100644
--- a/students/275677638/README.md
+++ b/students/275677638/README.md
@@ -1 +1,3 @@
愿意自荐代码的,可以每个人一个目录 以自己的QQ号命名 ,把自荐的代码放到里边去
+
+diff
From 35fd5945ccc8d665bafca3c0208dccbc248cb2a1 Mon Sep 17 00:00:00 2001
From: orajavac
Date: Tue, 13 Jun 2017 15:13:18 +0800
Subject: [PATCH 043/332] =?UTF-8?q?20170613=5F1513=20=E5=88=A0=E9=99=A4rea?=
=?UTF-8?q?dme.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
students/562768642/readme.md | 1 -
.../coding2017/ood/srp/ConfigurationKeys.java | 9 +
.../orajavac/coding2017/ood/srp/DBUtil.java | 25 +++
.../orajavac/coding2017/ood/srp/MailUtil.java | 18 ++
.../coding2017/ood/srp/PromotionMail.java | 199 ++++++++++++++++++
.../coding2017/ood/srp/product_promotion.txt | 4 +
6 files changed, 255 insertions(+), 1 deletion(-)
delete mode 100644 students/562768642/readme.md
create mode 100644 students/562768642/src/com/github/orajavac/coding2017/ood/srp/ConfigurationKeys.java
create mode 100644 students/562768642/src/com/github/orajavac/coding2017/ood/srp/DBUtil.java
create mode 100644 students/562768642/src/com/github/orajavac/coding2017/ood/srp/MailUtil.java
create mode 100644 students/562768642/src/com/github/orajavac/coding2017/ood/srp/PromotionMail.java
create mode 100644 students/562768642/src/com/github/orajavac/coding2017/ood/srp/product_promotion.txt
diff --git a/students/562768642/readme.md b/students/562768642/readme.md
deleted file mode 100644
index f363197d69..0000000000
--- a/students/562768642/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-最新提交,测试一下
\ No newline at end of file
diff --git a/students/562768642/src/com/github/orajavac/coding2017/ood/srp/ConfigurationKeys.java b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..94eb56e6e4
--- /dev/null
+++ b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/ConfigurationKeys.java
@@ -0,0 +1,9 @@
+package com.github.orajavac.coding2017.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/562768642/src/com/github/orajavac/coding2017/ood/srp/DBUtil.java b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..c4d5f8a65d
--- /dev/null
+++ b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/DBUtil.java
@@ -0,0 +1,25 @@
+package com.github.orajavac.coding2017.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/562768642/src/com/github/orajavac/coding2017/ood/srp/MailUtil.java b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..c9614ebfc5
--- /dev/null
+++ b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/MailUtil.java
@@ -0,0 +1,18 @@
+package com.github.orajavac.coding2017.ood.srp;
+
+public class MailUtil {
+
+ public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
+ boolean debug) {
+ //假装发了一封邮件
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("From:").append(fromAddress).append("\n");
+ buffer.append("To:").append(toAddress).append("\n");
+ buffer.append("Subject:").append(subject).append("\n");
+ buffer.append("Content:").append(message).append("\n");
+ System.out.println(buffer.toString());
+
+ }
+
+
+}
diff --git a/students/562768642/src/com/github/orajavac/coding2017/ood/srp/PromotionMail.java b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..db982d9f34
--- /dev/null
+++ b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/PromotionMail.java
@@ -0,0 +1,199 @@
+package com.github.orajavac.coding2017.ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+public class PromotionMail {
+
+
+ protected String sendMailQuery = null;
+
+
+ protected String smtpHost = null;
+ protected String altSmtpHost = null;
+ protected String fromAddress = null;
+ protected String toAddress = null;
+ protected String subject = null;
+ protected String message = null;
+
+ protected String productID = null;
+ protected String productDesc = null;
+
+ private static Configuration config;
+
+
+
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+
+ public static void main(String[] args) throws Exception {
+
+ File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+ boolean emailDebug = false;
+
+ PromotionMail pe = new PromotionMail(f, emailDebug);
+
+ }
+
+
+ public PromotionMail(File file, boolean mailDebug) throws Exception {
+
+ //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
+ readFile(file);
+
+
+ config = new Configuration();
+
+ setSMTPHost();
+ setAltSMTPHost();
+
+
+ setFromAddress();
+
+
+ setLoadQuery();
+
+ sendEMails(mailDebug, loadMailingList());
+
+
+ }
+
+
+
+
+ protected void setProductID(String productID)
+ {
+ this.productID = productID;
+
+ }
+
+ protected String getproductID()
+ {
+ return productID;
+ }
+
+ protected void setLoadQuery() throws Exception {
+
+ sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + productID +"' "
+ + "and send_mail=1 ";
+
+
+ System.out.println("loadQuery set");
+ }
+
+
+ protected void setSMTPHost()
+ {
+ smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ }
+
+
+ protected void setAltSMTPHost()
+ {
+ altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+
+ }
+
+
+ protected void setFromAddress()
+ {
+ fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+ protected void setMessage(HashMap userInfo) throws IOException
+ {
+
+ String name = (String) userInfo.get(NAME_KEY);
+
+ subject = "您关注的产品降价了";
+ message = "尊敬的 "+name+", 您关注的产品 " + productDesc + " 降价了,欢迎购买!" ;
+
+
+
+ }
+
+
+ protected void readFile(File file) throws IOException // @02C
+ {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+
+ setProductID(data[0]);
+ setProductDesc(data[1]);
+
+ System.out.println("产品ID = " + productID + "\n");
+ System.out.println("产品描述 = " + productDesc + "\n");
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ }
+
+ private void setProductDesc(String desc) {
+ this.productDesc = desc;
+ }
+
+
+ protected void configureEMail(HashMap userInfo) throws IOException
+ {
+ toAddress = (String) userInfo.get(EMAIL_KEY);
+ if (toAddress.length() > 0)
+ setMessage(userInfo);
+ }
+
+ protected List loadMailingList() throws Exception {
+ return DBUtil.query(this.sendMailQuery);
+ }
+
+
+ protected void sendEMails(boolean debug, List mailingList) throws IOException
+ {
+
+ System.out.println("开始发送邮件");
+
+
+ if (mailingList != null) {
+ Iterator iter = mailingList.iterator();
+ while (iter.hasNext()) {
+ configureEMail((HashMap) iter.next());
+ try
+ {
+ if (toAddress.length() > 0)
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
+ }
+ catch (Exception e)
+ {
+
+ try {
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
+
+ } catch (Exception e2)
+ {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+ }
+ }
+ }
+
+
+ }
+
+ else {
+ System.out.println("没有邮件发送");
+
+ }
+
+ }
+}
diff --git a/students/562768642/src/com/github/orajavac/coding2017/ood/srp/product_promotion.txt b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..0c0124cc61
--- /dev/null
+++ b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
From f022b287b3e4bc9472649078496f1a4b24d23fbb Mon Sep 17 00:00:00 2001
From: guozheng5 <840145455@qq.com>
Date: Tue, 13 Jun 2017 15:15:56 +0800
Subject: [PATCH 044/332] test
---
students/840145455/readme.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 students/840145455/readme.md
diff --git a/students/840145455/readme.md b/students/840145455/readme.md
new file mode 100644
index 0000000000..6afb392c20
--- /dev/null
+++ b/students/840145455/readme.md
@@ -0,0 +1 @@
+愿意自荐代码的,可以每个人一个目录 以自己的QQ号命名 ,把自荐的代码放到里边去
From 57ec996333fbabdd4fc210f3a6701b96941e8d0f Mon Sep 17 00:00:00 2001
From: orajavac
Date: Tue, 13 Jun 2017 15:17:51 +0800
Subject: [PATCH 045/332] =?UTF-8?q?20170613=5F1517=20=E6=B5=8B=E8=AF=95?=
=?UTF-8?q?=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/github/orajavac/coding2017/ood/srp/Configuration.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/students/562768642/src/com/github/orajavac/coding2017/ood/srp/Configuration.java b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/Configuration.java
index 465fe66675..bf9902bf99 100644
--- a/students/562768642/src/com/github/orajavac/coding2017/ood/srp/Configuration.java
+++ b/students/562768642/src/com/github/orajavac/coding2017/ood/srp/Configuration.java
@@ -9,7 +9,7 @@ public class Configuration {
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
From eb26a759ece77b182554690ec3f6bb7f44b8c94c Mon Sep 17 00:00:00 2001
From: yuyingzhi
Date: Tue, 13 Jun 2017 15:38:15 +0800
Subject: [PATCH 046/332] first ood-assignment finish
---
.../first_OOP_homework/ood-assignment/pom.xml | 32 ++++++
.../coderising/ood/srp/ConfigurationKeys.java | 9 ++
.../java/com/coderising/ood/srp/DBUtil.java | 24 ++++
.../java/com/coderising/ood/srp/Email.java | 80 ++++++++++++++
.../java/com/coderising/ood/srp/MailUtil.java | 15 +++
.../java/com/coderising/ood/srp/Message.java | 19 ++++
.../java/com/coderising/ood/srp/Product.java | 43 ++++++++
.../com/coderising/ood/srp/PromotionMail.java | 103 ++++++++++++++++++
.../java/com/coderising/ood/srp/TestMain.java | 16 +++
.../java/com/coderising/ood/srp/User.java | 21 ++++
.../coderising/ood/srp/product_promotion.txt | 4 +
.../81681981/first_OOP_homework/readme.txt | 11 ++
12 files changed, 377 insertions(+)
create mode 100644 students/81681981/first_OOP_homework/ood-assignment/pom.xml
create mode 100644 students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
create mode 100644 students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
create mode 100644 students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Email.java
create mode 100644 students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
create mode 100644 students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Message.java
create mode 100644 students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Product.java
create mode 100644 students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
create mode 100644 students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/TestMain.java
create mode 100644 students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/User.java
create mode 100644 students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
create mode 100644 students/81681981/first_OOP_homework/readme.txt
diff --git a/students/81681981/first_OOP_homework/ood-assignment/pom.xml b/students/81681981/first_OOP_homework/ood-assignment/pom.xml
new file mode 100644
index 0000000000..cac49a5328
--- /dev/null
+++ b/students/81681981/first_OOP_homework/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/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..8695aed644
--- /dev/null
+++ b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
@@ -0,0 +1,9 @@
+package com.coderising.ood.srp;
+
+public class ConfigurationKeys {
+
+ public static final String SMTP_SERVER = "smtp.server";
+ public static final String ALT_SMTP_SERVER = "alt.smtp.server";
+ public static final String EMAIL_ADMIN = "email.admin";
+
+}
diff --git a/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..0af0155e33
--- /dev/null
+++ b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
@@ -0,0 +1,24 @@
+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.setUserName("User" + i);
+ user.setMail(i+"aa@bb.com");
+ userList.add(user);
+ }
+
+ return userList;
+ }
+}
diff --git a/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Email.java b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Email.java
new file mode 100644
index 0000000000..b6d62acbeb
--- /dev/null
+++ b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Email.java
@@ -0,0 +1,80 @@
+package com.coderising.ood.srp;
+
+import java.util.HashMap;
+import java.util.Map;
+/*
+ * email
+ */
+
+public class Email {
+
+ 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");
+ }
+ protected String smtpHost = null;
+ protected String altSmtpHost = null;
+ protected String fromAddress = null;
+ protected String subject = null;
+ protected String message = null;
+
+ /**
+ * 应该从配置文件读, 但是这里简化为直接从一个map 中去读
+ * @param key
+ * @return
+ */
+ public String getProperty(String key) {
+
+ return configurations.get(key);
+ }
+
+ 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 String getFromAddress() {
+ return fromAddress;
+ }
+
+
+ public void setFromAddress(String fromAddress) {
+ this.fromAddress = fromAddress;
+ }
+
+ protected void setSMTPHost()
+ {
+ smtpHost = this.getProperty(ConfigurationKeys.SMTP_SERVER);
+ }
+
+
+ protected void setAltSMTPHost()
+ {
+ altSmtpHost = this.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+
+ }
+
+
+ protected void setFromAddress()
+ {
+ fromAddress = this.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+}
diff --git a/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..f0adff0ab8
--- /dev/null
+++ b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
@@ -0,0 +1,15 @@
+package com.coderising.ood.srp;
+
+
+public class MailUtil {
+ public static void sendEmail(String toAddress,Message mes,boolean debug) {
+ Email email = new Email();
+ //假装发了一封邮件
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("From:").append(email.getFromAddress()).append("\n");
+ buffer.append("To:").append(toAddress).append("\n");
+ buffer.append("Subject:").append(mes.getSubject()).append("\n");
+ buffer.append("Content:").append(mes.getMessageDesc()).append("\n");
+ System.out.println(buffer.toString());
+ }
+}
diff --git a/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Message.java b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Message.java
new file mode 100644
index 0000000000..59d916286b
--- /dev/null
+++ b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Message.java
@@ -0,0 +1,19 @@
+package com.coderising.ood.srp;
+
+public class Message {
+ private String subject;
+ private String messageDesc;
+ public String getSubject() {
+ return subject;
+ }
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+ public String getMessageDesc() {
+ return messageDesc;
+ }
+ public void setMessageDesc(String messageDesc) {
+ this.messageDesc = messageDesc;
+ }
+
+}
diff --git a/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Product.java b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Product.java
new file mode 100644
index 0000000000..236f61d132
--- /dev/null
+++ b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/Product.java
@@ -0,0 +1,43 @@
+package com.coderising.ood.srp;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Product {
+
+ protected String productID = null;
+ protected String productDesc = null;
+
+ protected void setProductID(String productID)
+ {
+ this.productID = productID;
+
+ }
+
+ protected String getproductID()
+ {
+ return productID;
+ }
+
+ public String getProductDesc() {
+ return productDesc;
+ }
+
+ public void setProductDesc(String productDesc) {
+ this.productDesc = productDesc;
+ }
+
+ public String getProductID() {
+ return productID;
+ }
+
+ //获得该产品的所有订阅者
+ protected List getLoadQuery(String productID){
+ String sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + productID +"' "
+ + "and send_mail=1 ";
+
+ System.out.println("loadQuery set");
+ return DBUtil.query(sendMailQuery);
+ }
+}
diff --git a/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..b0641c9789
--- /dev/null
+++ b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -0,0 +1,103 @@
+package com.coderising.ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+public class PromotionMail {
+
+ protected String sendMailQuery = null;
+
+ protected String toAddress = null;
+
+ protected String subject = null;
+ protected String message = null;
+ /**
+ * 1.读产品信息 2.获取发送地址 3.组织内容 4.发送
+ *
+ * */
+ // 1.获取产品信息
+ protected List readFile(File file) throws IOException // @02C
+ {
+ List productlist = new ArrayList();
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+ Product product = new Product();
+ product.setProductID(data[0]);
+ product.setProductDesc(data[1]);
+ productlist.add(product);
+ System.out.println("产品ID = " + data[0] + "\n");
+ System.out.println("产品描述 = " + data[1] + "\n");
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+
+ return productlist;
+ }
+
+ // 获取产品信息
+ public PromotionMail(File file, boolean mailDebug) throws Exception {
+
+ // 读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
+ List productlist = readFile(file);
+ if (productlist != null) {
+ for (int i = 0; i < productlist.size(); i++) {
+ Product product = (Product) productlist.get(i);
+ if(product != null){
+ this.consistAndSend(product);
+ }
+ }
+
+ }
+ }
+
+ //获取某产品的所有订阅用户,并推送对应内容
+ public void consistAndSend(Product product){
+ List toAddressList = product.getLoadQuery(product
+ .getproductID());// 获取该产品的订阅者
+ if (toAddressList != null){
+ for (int j = 0; j < toAddressList.size(); j++) {
+ User user = (User) toAddressList.get(j);
+ Message mes = this.setMessage(user.getUserName(),
+ product.getProductDesc());
+ this.sendEMails(true, mes, user.getMail());
+ }
+ }
+ }
+
+
+ protected Message setMessage(String name, String productDesc){
+ Message mes = new Message();
+ String subject = "您关注的产品降价了";
+ String message = "尊敬的 " + name + ", 您关注的产品 " + productDesc
+ + " 降价了,欢迎购买!";
+ mes.setSubject(subject);
+ mes.setMessageDesc(message);
+ return mes;
+ }
+
+ protected void sendEMails(boolean debug, Message mes, String toAddress){
+ System.out.println("开始发送邮件");
+ if (null != toAddress && !toAddress.equals("")) {
+ try{
+ MailUtil.sendEmail(toAddress, mes, debug);
+
+ }catch(Exception e){
+
+ }
+ } else {
+ System.out.println("没有邮件发送");
+
+ }
+
+ }
+}
diff --git a/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/TestMain.java b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/TestMain.java
new file mode 100644
index 0000000000..88b43c18ac
--- /dev/null
+++ b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/TestMain.java
@@ -0,0 +1,16 @@
+package com.coderising.ood.srp;
+
+import java.io.File;
+
+public class TestMain {
+
+ public static void main(String[] args) throws Exception {
+
+ File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+ boolean emailDebug = false;
+
+ PromotionMail pe = new PromotionMail(f, emailDebug);
+
+
+ }
+}
diff --git a/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/User.java b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/User.java
new file mode 100644
index 0000000000..cb03ec5d2c
--- /dev/null
+++ b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/User.java
@@ -0,0 +1,21 @@
+package com.coderising.ood.srp;
+
+import java.util.List;
+
+public class User {
+ private String userName;
+ private String mail;
+ public String getUserName() {
+ return userName;
+ }
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+ public String getMail() {
+ return mail;
+ }
+ public void setMail(String mail) {
+ this.mail = mail;
+ }
+
+}
diff --git a/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/81681981/first_OOP_homework/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
diff --git a/students/81681981/first_OOP_homework/readme.txt b/students/81681981/first_OOP_homework/readme.txt
new file mode 100644
index 0000000000..0ddf999fd4
--- /dev/null
+++ b/students/81681981/first_OOP_homework/readme.txt
@@ -0,0 +1,11 @@
+ҵ˵
+
+༰
+1.conifgurationKeys.java ʼͷϢ
+2.User.java ӦûϢû䣩
+3.DBUtil.java ݿ࣬Ѽֵ ΪUser
+4.Email.java άʼ͵ǰϢʼ⣬ʼݣsmtphost,altSmtpHost,fromAddress,subject,message
+5.Product.java άƷϢû
+6.Message.javaάҪ͵
+7.PromotionMail.java ܣȡƷϢ֯Ҫ͵ݷװΪMessageȡòƷӦĶûMailUtil.java ʼ
+8.MailUtil.java
\ No newline at end of file
From 24e2243834b12893c5fd68579f66cdb3cee4ee86 Mon Sep 17 00:00:00 2001
From: yangdd1205
Date: Tue, 13 Jun 2017 16:24:13 +0800
Subject: [PATCH 047/332] update package name
---
.../{java => }/com/coderising/ood/srp/Configuration.java | 2 +-
.../{java => }/com/coderising/ood/srp/ConfigurationKeys.java | 2 +-
.../main/java/{java => }/com/coderising/ood/srp/DBUtil.java | 2 +-
.../java/{java => }/com/coderising/ood/srp/MailUtil.java | 2 +-
.../{java => }/com/coderising/ood/srp/PromotionMail.java | 5 ++---
.../{java => }/com/coderising/ood/srp/product_promotion.txt | 0
6 files changed, 6 insertions(+), 7 deletions(-)
rename students/1049843090/ood/src/main/java/{java => }/com/coderising/ood/srp/Configuration.java (93%)
rename students/1049843090/ood/src/main/java/{java => }/com/coderising/ood/srp/ConfigurationKeys.java (85%)
rename students/1049843090/ood/src/main/java/{java => }/com/coderising/ood/srp/DBUtil.java (92%)
rename students/1049843090/ood/src/main/java/{java => }/com/coderising/ood/srp/MailUtil.java (93%)
rename students/1049843090/ood/src/main/java/{java => }/com/coderising/ood/srp/PromotionMail.java (96%)
rename students/1049843090/ood/src/main/java/{java => }/com/coderising/ood/srp/product_promotion.txt (100%)
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/Configuration.java b/students/1049843090/ood/src/main/java/com/coderising/ood/srp/Configuration.java
similarity index 93%
rename from students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/Configuration.java
rename to students/1049843090/ood/src/main/java/com/coderising/ood/srp/Configuration.java
index d1209d44e4..70759b547a 100644
--- a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/Configuration.java
+++ b/students/1049843090/ood/src/main/java/com/coderising/ood/srp/Configuration.java
@@ -1,4 +1,4 @@
-package java.com.coderising.ood.srp;
+package com.coderising.ood.srp;
import java.util.HashMap;
import java.util.Map;
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/1049843090/ood/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
similarity index 85%
rename from students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/ConfigurationKeys.java
rename to students/1049843090/ood/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
index 5f4b048948..c57f37c4ce 100644
--- a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/ConfigurationKeys.java
+++ b/students/1049843090/ood/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
@@ -1,4 +1,4 @@
-package java.com.coderising.ood.srp;
+package com.coderising.ood.srp;
public class ConfigurationKeys {
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/DBUtil.java b/students/1049843090/ood/src/main/java/com/coderising/ood/srp/DBUtil.java
similarity index 92%
rename from students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/DBUtil.java
rename to students/1049843090/ood/src/main/java/com/coderising/ood/srp/DBUtil.java
index 299aa8bc46..4b8452ded2 100644
--- a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/DBUtil.java
+++ b/students/1049843090/ood/src/main/java/com/coderising/ood/srp/DBUtil.java
@@ -1,4 +1,4 @@
-package java.com.coderising.ood.srp;
+package com.coderising.ood.srp;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/MailUtil.java b/students/1049843090/ood/src/main/java/com/coderising/ood/srp/MailUtil.java
similarity index 93%
rename from students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/MailUtil.java
rename to students/1049843090/ood/src/main/java/com/coderising/ood/srp/MailUtil.java
index 3c75104aeb..9e77ef1968 100644
--- a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/MailUtil.java
+++ b/students/1049843090/ood/src/main/java/com/coderising/ood/srp/MailUtil.java
@@ -1,4 +1,4 @@
-package java.com.coderising.ood.srp;
+package com.coderising.ood.srp;
public class MailUtil {
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/PromotionMail.java b/students/1049843090/ood/src/main/java/com/coderising/ood/srp/PromotionMail.java
similarity index 96%
rename from students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/PromotionMail.java
rename to students/1049843090/ood/src/main/java/com/coderising/ood/srp/PromotionMail.java
index 1a3d4a6c15..55c1f2558c 100644
--- a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/PromotionMail.java
+++ b/students/1049843090/ood/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -1,10 +1,9 @@
-package java.com.coderising.ood.srp;
+package com.coderising.ood.srp;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
-import java.io.Serializable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -34,7 +33,7 @@ public class PromotionMail {
public static void main(String[] args) throws Exception {
- File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+ File f = new File("E:\\git\\coding2017-Q2\\students\\1049843090\\ood\\src\\main\\java\\com\\coderising\\ood\\srp\\product_promotion.txt");
boolean emailDebug = false;
PromotionMail pe = new PromotionMail(f, emailDebug);
diff --git a/students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/product_promotion.txt b/students/1049843090/ood/src/main/java/com/coderising/ood/srp/product_promotion.txt
similarity index 100%
rename from students/1049843090/ood/src/main/java/java/com/coderising/ood/srp/product_promotion.txt
rename to students/1049843090/ood/src/main/java/com/coderising/ood/srp/product_promotion.txt
From 8fbe00cb9afb8af880d8185618f0ee2869bc2087 Mon Sep 17 00:00:00 2001
From: gaohuan30
Date: Tue, 13 Jun 2017 16:41:46 +0800
Subject: [PATCH 048/332] =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
students/862726639/pom.xml | 32 +++
.../com/coderising/ood/srp/Configuration.java | 23 ++
.../coderising/ood/srp/ConfigurationKeys.java | 9 +
.../java/com/coderising/ood/srp/DBUtil.java | 25 +++
.../java/com/coderising/ood/srp/MailUtil.java | 18 ++
.../com/coderising/ood/srp/PromotionMail.java | 199 ++++++++++++++++++
.../coderising/ood/srp/product_promotion.txt | 4 +
7 files changed, 310 insertions(+)
create mode 100644 students/862726639/pom.xml
create mode 100644 students/862726639/src/main/java/com/coderising/ood/srp/Configuration.java
create mode 100644 students/862726639/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
create mode 100644 students/862726639/src/main/java/com/coderising/ood/srp/DBUtil.java
create mode 100644 students/862726639/src/main/java/com/coderising/ood/srp/MailUtil.java
create mode 100644 students/862726639/src/main/java/com/coderising/ood/srp/PromotionMail.java
create mode 100644 students/862726639/src/main/java/com/coderising/ood/srp/product_promotion.txt
diff --git a/students/862726639/pom.xml b/students/862726639/pom.xml
new file mode 100644
index 0000000000..cac49a5328
--- /dev/null
+++ b/students/862726639/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/862726639/src/main/java/com/coderising/ood/srp/Configuration.java b/students/862726639/src/main/java/com/coderising/ood/srp/Configuration.java
new file mode 100644
index 0000000000..f328c1816a
--- /dev/null
+++ b/students/862726639/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/862726639/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/862726639/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..8695aed644
--- /dev/null
+++ b/students/862726639/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/862726639/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/862726639/src/main/java/com/coderising/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..82e9261d18
--- /dev/null
+++ b/students/862726639/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/862726639/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/862726639/src/main/java/com/coderising/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..9f9e749af7
--- /dev/null
+++ b/students/862726639/src/main/java/com/coderising/ood/srp/MailUtil.java
@@ -0,0 +1,18 @@
+package com.coderising.ood.srp;
+
+public class MailUtil {
+
+ public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
+ boolean debug) {
+ //假装发了一封邮件
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("From:").append(fromAddress).append("\n");
+ buffer.append("To:").append(toAddress).append("\n");
+ buffer.append("Subject:").append(subject).append("\n");
+ buffer.append("Content:").append(message).append("\n");
+ System.out.println(buffer.toString());
+
+ }
+
+
+}
diff --git a/students/862726639/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/862726639/src/main/java/com/coderising/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..781587a846
--- /dev/null
+++ b/students/862726639/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -0,0 +1,199 @@
+package com.coderising.ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+public class PromotionMail {
+
+
+ protected String sendMailQuery = null;
+
+
+ protected String smtpHost = null;
+ protected String altSmtpHost = null;
+ protected String fromAddress = null;
+ protected String toAddress = null;
+ protected String subject = null;
+ protected String message = null;
+
+ protected String productID = null;
+ protected String productDesc = null;
+
+ private static Configuration config;
+
+
+
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+
+ public static void main(String[] args) throws Exception {
+
+ File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+ boolean emailDebug = false;
+
+ PromotionMail pe = new PromotionMail(f, emailDebug);
+
+ }
+
+
+ public PromotionMail(File file, boolean mailDebug) throws Exception {
+
+ //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
+ readFile(file);
+
+
+ config = new Configuration();
+
+ setSMTPHost();
+ setAltSMTPHost();
+
+
+ setFromAddress();
+
+
+ setLoadQuery();
+
+ sendEMails(mailDebug, loadMailingList());
+
+
+ }
+
+
+
+
+ protected void setProductID(String productID)
+ {
+ this.productID = productID;
+
+ }
+
+ protected String getproductID()
+ {
+ return productID;
+ }
+
+ protected void setLoadQuery() throws Exception {
+
+ sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + productID +"' "
+ + "and send_mail=1 ";
+
+
+ System.out.println("loadQuery set");
+ }
+
+
+ protected void setSMTPHost()
+ {
+ smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ }
+
+
+ protected void setAltSMTPHost()
+ {
+ altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+
+ }
+
+
+ protected void setFromAddress()
+ {
+ fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+ protected void setMessage(HashMap userInfo) throws IOException
+ {
+
+ String name = (String) userInfo.get(NAME_KEY);
+
+ subject = "您关注的产品降价了";
+ message = "尊敬的 "+name+", 您关注的产品 " + productDesc + " 降价了,欢迎购买!" ;
+
+
+
+ }
+
+
+ protected void readFile(File file) throws IOException // @02C
+ {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+
+ setProductID(data[0]);
+ setProductDesc(data[1]);
+
+ System.out.println("产品ID = " + productID + "\n");
+ System.out.println("产品描述 = " + productDesc + "\n");
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ }
+
+ private void setProductDesc(String desc) {
+ this.productDesc = desc;
+ }
+
+
+ protected void configureEMail(HashMap userInfo) throws IOException
+ {
+ toAddress = (String) userInfo.get(EMAIL_KEY);
+ if (toAddress.length() > 0)
+ setMessage(userInfo);
+ }
+
+ protected List loadMailingList() throws Exception {
+ return DBUtil.query(this.sendMailQuery);
+ }
+
+
+ protected void sendEMails(boolean debug, List mailingList) throws IOException
+ {
+
+ System.out.println("开始发送邮件");
+
+
+ if (mailingList != null) {
+ Iterator iter = mailingList.iterator();
+ while (iter.hasNext()) {
+ configureEMail((HashMap) iter.next());
+ try
+ {
+ if (toAddress.length() > 0)
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
+ }
+ catch (Exception e)
+ {
+
+ try {
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
+
+ } catch (Exception e2)
+ {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+ }
+ }
+ }
+
+
+ }
+
+ else {
+ System.out.println("没有邮件发送");
+
+ }
+
+ }
+}
diff --git a/students/862726639/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/862726639/src/main/java/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/862726639/src/main/java/com/coderising/ood/srp/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
From f0d88f2a1d087778a09f049f73e4041e92bcee4e Mon Sep 17 00:00:00 2001
From: Xujie
Date: Tue, 13 Jun 2017 17:19:22 +0800
Subject: [PATCH 049/332] =?UTF-8?q?=E5=88=9B=E5=BB=BA617314917=E6=96=87?=
=?UTF-8?q?=E4=BB=B6=E5=A4=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
创建文件夹,并添加README.md
---
students/617314917/readme.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 students/617314917/readme.md
diff --git a/students/617314917/readme.md b/students/617314917/readme.md
new file mode 100644
index 0000000000..d620ba5b0a
--- /dev/null
+++ b/students/617314917/readme.md
@@ -0,0 +1 @@
+这是“广州-许洁”提交代码的qq命名文件夹。
\ No newline at end of file
From 24f5e9c38be98d6d36157e595b95ca580de9c119 Mon Sep 17 00:00:00 2001
From: Horace He
Date: Tue, 13 Jun 2017 18:51:26 +0800
Subject: [PATCH 050/332] first commit homework
---
students/108847244/ood/ood-assignment/pom.xml | 32 +++
.../com/coderising/ood/srp/Configuration.java | 23 ++
.../coderising/ood/srp/ConfigurationKeys.java | 9 +
.../java/com/coderising/ood/srp/DBUtil.java | 25 +++
.../java/com/coderising/ood/srp/MailUtil.java | 18 ++
.../com/coderising/ood/srp/PromotionMail.java | 199 ++++++++++++++++++
.../coderising/ood/srp/product_promotion.txt | 4 +
7 files changed, 310 insertions(+)
create mode 100644 students/108847244/ood/ood-assignment/pom.xml
create mode 100644 students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
create mode 100644 students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
create mode 100644 students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
create mode 100644 students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
create mode 100644 students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
create mode 100644 students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
diff --git a/students/108847244/ood/ood-assignment/pom.xml b/students/108847244/ood/ood-assignment/pom.xml
new file mode 100644
index 0000000000..cac49a5328
--- /dev/null
+++ b/students/108847244/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/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
new file mode 100644
index 0000000000..f328c1816a
--- /dev/null
+++ b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
@@ -0,0 +1,23 @@
+package com.coderising.ood.srp;
+import java.util.HashMap;
+import java.util.Map;
+
+public class Configuration {
+
+ static Map configurations = new HashMap<>();
+ static{
+ configurations.put(ConfigurationKeys.SMTP_SERVER, "smtp.163.com");
+ configurations.put(ConfigurationKeys.ALT_SMTP_SERVER, "smtp1.163.com");
+ configurations.put(ConfigurationKeys.EMAIL_ADMIN, "admin@company.com");
+ }
+ /**
+ * 应该从配置文件读, 但是这里简化为直接从一个map 中去读
+ * @param key
+ * @return
+ */
+ public String getProperty(String key) {
+
+ return configurations.get(key);
+ }
+
+}
diff --git a/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..8695aed644
--- /dev/null
+++ b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
@@ -0,0 +1,9 @@
+package com.coderising.ood.srp;
+
+public class ConfigurationKeys {
+
+ public static final String SMTP_SERVER = "smtp.server";
+ public static final String ALT_SMTP_SERVER = "alt.smtp.server";
+ public static final String EMAIL_ADMIN = "email.admin";
+
+}
diff --git a/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..82e9261d18
--- /dev/null
+++ b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
@@ -0,0 +1,25 @@
+package com.coderising.ood.srp;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+public class DBUtil {
+
+ /**
+ * 应该从数据库读, 但是简化为直接生成。
+ * @param sql
+ * @return
+ */
+ public static List query(String sql){
+
+ List userList = new ArrayList();
+ for (int i = 1; i <= 3; i++) {
+ HashMap userInfo = new HashMap();
+ userInfo.put("NAME", "User" + i);
+ userInfo.put("EMAIL", "aa@bb.com");
+ userList.add(userInfo);
+ }
+
+ return userList;
+ }
+}
diff --git a/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..9f9e749af7
--- /dev/null
+++ b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
@@ -0,0 +1,18 @@
+package com.coderising.ood.srp;
+
+public class MailUtil {
+
+ public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
+ boolean debug) {
+ //假装发了一封邮件
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("From:").append(fromAddress).append("\n");
+ buffer.append("To:").append(toAddress).append("\n");
+ buffer.append("Subject:").append(subject).append("\n");
+ buffer.append("Content:").append(message).append("\n");
+ System.out.println(buffer.toString());
+
+ }
+
+
+}
diff --git a/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..781587a846
--- /dev/null
+++ b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -0,0 +1,199 @@
+package com.coderising.ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+public class PromotionMail {
+
+
+ protected String sendMailQuery = null;
+
+
+ protected String smtpHost = null;
+ protected String altSmtpHost = null;
+ protected String fromAddress = null;
+ protected String toAddress = null;
+ protected String subject = null;
+ protected String message = null;
+
+ protected String productID = null;
+ protected String productDesc = null;
+
+ private static Configuration config;
+
+
+
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+
+ public static void main(String[] args) throws Exception {
+
+ File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
+ boolean emailDebug = false;
+
+ PromotionMail pe = new PromotionMail(f, emailDebug);
+
+ }
+
+
+ public PromotionMail(File file, boolean mailDebug) throws Exception {
+
+ //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
+ readFile(file);
+
+
+ config = new Configuration();
+
+ setSMTPHost();
+ setAltSMTPHost();
+
+
+ setFromAddress();
+
+
+ setLoadQuery();
+
+ sendEMails(mailDebug, loadMailingList());
+
+
+ }
+
+
+
+
+ protected void setProductID(String productID)
+ {
+ this.productID = productID;
+
+ }
+
+ protected String getproductID()
+ {
+ return productID;
+ }
+
+ protected void setLoadQuery() throws Exception {
+
+ sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + productID +"' "
+ + "and send_mail=1 ";
+
+
+ System.out.println("loadQuery set");
+ }
+
+
+ protected void setSMTPHost()
+ {
+ smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ }
+
+
+ protected void setAltSMTPHost()
+ {
+ altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+
+ }
+
+
+ protected void setFromAddress()
+ {
+ fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+ protected void setMessage(HashMap userInfo) throws IOException
+ {
+
+ String name = (String) userInfo.get(NAME_KEY);
+
+ subject = "您关注的产品降价了";
+ message = "尊敬的 "+name+", 您关注的产品 " + productDesc + " 降价了,欢迎购买!" ;
+
+
+
+ }
+
+
+ protected void readFile(File file) throws IOException // @02C
+ {
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+
+ setProductID(data[0]);
+ setProductDesc(data[1]);
+
+ System.out.println("产品ID = " + productID + "\n");
+ System.out.println("产品描述 = " + productDesc + "\n");
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ }
+
+ private void setProductDesc(String desc) {
+ this.productDesc = desc;
+ }
+
+
+ protected void configureEMail(HashMap userInfo) throws IOException
+ {
+ toAddress = (String) userInfo.get(EMAIL_KEY);
+ if (toAddress.length() > 0)
+ setMessage(userInfo);
+ }
+
+ protected List loadMailingList() throws Exception {
+ return DBUtil.query(this.sendMailQuery);
+ }
+
+
+ protected void sendEMails(boolean debug, List mailingList) throws IOException
+ {
+
+ System.out.println("开始发送邮件");
+
+
+ if (mailingList != null) {
+ Iterator iter = mailingList.iterator();
+ while (iter.hasNext()) {
+ configureEMail((HashMap) iter.next());
+ try
+ {
+ if (toAddress.length() > 0)
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
+ }
+ catch (Exception e)
+ {
+
+ try {
+ MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
+
+ } catch (Exception e2)
+ {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+ }
+ }
+ }
+
+
+ }
+
+ else {
+ System.out.println("没有邮件发送");
+
+ }
+
+ }
+}
diff --git a/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/108847244/ood/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
From e51fcd95b99647b826623c2dfc9832cf6c8b2c7f Mon Sep 17 00:00:00 2001
From: KevinSmile
Date: Tue, 13 Jun 2017 19:29:02 +0800
Subject: [PATCH 051/332] create readme
---
students/279069328/readme.md | 3 +++
1 file changed, 3 insertions(+)
create mode 100644 students/279069328/readme.md
diff --git a/students/279069328/readme.md b/students/279069328/readme.md
new file mode 100644
index 0000000000..ce14d38509
--- /dev/null
+++ b/students/279069328/readme.md
@@ -0,0 +1,3 @@
+# Coding 2017
+
+@KevinSmile
\ No newline at end of file
From 6ea33cd859287af627c1c8cf61ea0cbe1e005a64 Mon Sep 17 00:00:00 2001
From: luoziyihao
Date: Tue, 13 Jun 2017 21:35:13 +0800
Subject: [PATCH 052/332] =?UTF-8?q?optimize=20promotioMail=20v1=20todo=20?=
=?UTF-8?q?=E5=A3=AE=E6=80=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ood/srp/optimize/ProductParser.java | 8 +-
.../ood/srp/optimize/PromotionMailApp.java | 15 +++-
.../ood/srp/optimize/PromotionMailClaim.java | 87 ++++++++++++++++++-
.../optimize/PromotionMailableBehavior.java | 29 ++++++-
.../ood/srp/optimize/SmptPropeties.java | 30 ++++++-
.../com/coderising/ood/srp/optimize/User.java | 16 ++++
.../ood/srp/optimize/UserService.java | 12 ++-
7 files changed, 177 insertions(+), 20 deletions(-)
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/ProductParser.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/ProductParser.java
index dd3198c42d..0c1cbba2e4 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/ProductParser.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/ProductParser.java
@@ -11,13 +11,7 @@
*/
public class ProductParser {
- private String productClassPath;
-
- public void setProductClassPath(String productClassPath) {
- this.productClassPath = productClassPath;
- }
-
- public List parse() {
+ public List parse(String productClassPath) {
List stringList = readToStringList(openStream(productClassPath));
return stringList.stream()
.map(String::trim)
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailApp.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailApp.java
index 8b9061e7e5..ce49ae101b 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailApp.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailApp.java
@@ -7,9 +7,16 @@
*/
public class PromotionMailApp {
- public static void main(String args[]){
- ProductParser productParser = new ProductParser();
- productParser.setProductClassPath("product_promotion.txt");
- List products = productParser.parse();
+ public static void main(String args[]) {
+ List products = new ProductParser().parse("product_promotion.txt");
+
+ List users = new UserService().loadMailingList();
+
+ List promotionMailClaims = new PromotionMailClaim()
+ .load(products, users, new SmptPropeties(), true);
+
+ new PromotionMailableBehavior().send(promotionMailClaims);
+
}
+
}
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java
index 06d447b817..7d2011a5df 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java
@@ -1,5 +1,8 @@
package com.coderising.ood.srp.optimize;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Created by luoziyihao on 6/12/17.
*/
@@ -9,9 +12,87 @@ public class PromotionMailClaim {
private String subject;
private String message;
private String smtpHost;
- private String debug;
+ private String altSmtpHost;
+ private Boolean mailDebug;
+
+ private PromotionMailClaim init(Product product, User user, SmptPropeties smptPropeties, Boolean mailDebug) {
+ this.toAddress = user.getEmail();
+ this.fromAddress = smptPropeties.getFromAddress();
+ this.subject = "您关注的产品降价了";
+ this.message = "尊敬的 " + user.getName() + ", 您关注的产品 " + product.getProductDesc() + " 降价了,欢迎购买!";
+ this.smtpHost = smptPropeties.getSmtpHost();
+ this.altSmtpHost = smptPropeties.getAltSmtpHost();
+ this.mailDebug = mailDebug;
+ return this;
+ }
+
+ public List load(List products, List users, SmptPropeties smptPropeties
+ , boolean mailDebug) {
+ List promotionMailClaims = new ArrayList<>();
+ for (Product product : products) {
+ for (User user : users) {
+ PromotionMailClaim promotionMailClaim = new PromotionMailClaim()
+ .init(product, user, smptPropeties, true);
+ promotionMailClaims.add(promotionMailClaim);
+ }
+ }
+ return promotionMailClaims;
+ }
+
+ public String getAltSmtpHost() {
+ return altSmtpHost;
+ }
+
+ public void setAltSmtpHost(String altSmtpHost) {
+ this.altSmtpHost = altSmtpHost;
+ }
+
+ public Boolean getMailDebug() {
+ return mailDebug;
+ }
+
+ public void setMailDebug(Boolean mailDebug) {
+ this.mailDebug = mailDebug;
+ }
+
+ public String getToAddress() {
+ return toAddress;
+ }
+
+ public void setToAddress(String toAddress) {
+ this.toAddress = toAddress;
+ }
+
+ public String getFromAddress() {
+ return fromAddress;
+ }
+
+ public void setFromAddress(String fromAddress) {
+ this.fromAddress = fromAddress;
+ }
+
+ 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;
+ }
+
+ public String getSmtpHost() {
+ return smtpHost;
+ }
- public void setMessage(Product product, User user) {
- this.message = null;
+ public void setSmtpHost(String smtpHost) {
+ this.smtpHost = smtpHost;
}
+
}
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java
index 548f69722a..39321d554a 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java
@@ -7,7 +7,34 @@
*/
public class PromotionMailableBehavior {
- void send(List emailSendClaimList) {
+ public void send(List emailSendClaimList) {
+ for (PromotionMailClaim promotionMailClaim : emailSendClaimList) {
+ sendEmailForOneClaim(promotionMailClaim);
+ }
+ }
+
+ private void sendEmailForOneClaim(PromotionMailClaim promotionMailClaim) {
+ System.out.println("开始发送邮件");
+
+ try {
+ doSendMail(promotionMailClaim);
+ } catch (Exception e) {
+ promotionMailClaim.setSmtpHost(promotionMailClaim.getAltSmtpHost());
+ try {
+ doSendMail(promotionMailClaim);
+ } catch (Exception e1) {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e.getMessage());
+ }
+ }
+ }
+ private void doSendMail(PromotionMailClaim promotionMailClaim) {
+ //假装发了一封邮件
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("From:").append(promotionMailClaim.getFromAddress()).append("\n");
+ buffer.append("To:").append(promotionMailClaim.getToAddress()).append("\n");
+ buffer.append("Subject:").append(promotionMailClaim.getSubject()).append("\n");
+ buffer.append("Content:").append(promotionMailClaim.getMessage()).append("\n");
+ System.out.println(buffer.toString());
}
}
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/SmptPropeties.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/SmptPropeties.java
index fd6d7be8d7..affdf946fd 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/SmptPropeties.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/SmptPropeties.java
@@ -4,7 +4,31 @@
* Created by luoziyihao on 6/12/17.
*/
public class SmptPropeties {
- private String smtpHost;
- private String altSmtpHost;
- private String fromAddress;
+ private String smtpHost = "smtp.server";;
+ private String altSmtpHost = "smtp1.163.com";
+ private String fromAddress = " admin@company.com";
+
+ 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 String getFromAddress() {
+ return fromAddress;
+ }
+
+ public void setFromAddress(String fromAddress) {
+ this.fromAddress = fromAddress;
+ }
}
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/User.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/User.java
index 45f7739a7b..b7ec110914 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/User.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/User.java
@@ -6,4 +6,20 @@
public class User {
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/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/UserService.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/UserService.java
index 5178489e0f..fe5317cc55 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/UserService.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/UserService.java
@@ -1,5 +1,6 @@
package com.coderising.ood.srp.optimize;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -7,7 +8,14 @@
*/
public class UserService {
- List loadMailingList(){
- return null;
+ List loadMailingList() {
+ List userList = new ArrayList<>();
+ for (int i = 1; i <= 3; i++) {
+ User user = new User();
+ user.setName("User" + i);
+ user.setEmail("aa@bb.com");
+ userList.add(user);
+ }
+ return userList;
}
}
From 93d655df3e04ebed259db9d8802cc36f26b079dc Mon Sep 17 00:00:00 2001
From: luoziyihao
Date: Tue, 13 Jun 2017 21:36:23 +0800
Subject: [PATCH 053/332] com
---
.../coderising/ood/srp/optimize/PromotionMailableBehavior.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java
index 39321d554a..e350b1f735 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java
@@ -19,8 +19,8 @@ private void sendEmailForOneClaim(PromotionMailClaim promotionMailClaim) {
try {
doSendMail(promotionMailClaim);
} catch (Exception e) {
- promotionMailClaim.setSmtpHost(promotionMailClaim.getAltSmtpHost());
try {
+ promotionMailClaim.setSmtpHost(promotionMailClaim.getAltSmtpHost());
doSendMail(promotionMailClaim);
} catch (Exception e1) {
System.out.println("通过备用 SMTP服务器发送邮件失败: " + e.getMessage());
From 9fae307f75dfbab4f191c4169f58a1f0acc601bf Mon Sep 17 00:00:00 2001
From: luoziyihao
Date: Tue, 13 Jun 2017 21:39:00 +0800
Subject: [PATCH 054/332] com
---
.../com/coderising/ood/srp/optimize/PromotionMailClaim.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java
index 7d2011a5df..c1bd087af7 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java
@@ -32,7 +32,7 @@ public List load(List products, List users, S
for (Product product : products) {
for (User user : users) {
PromotionMailClaim promotionMailClaim = new PromotionMailClaim()
- .init(product, user, smptPropeties, true);
+ .init(product, user, smptPropeties, mailDebug);
promotionMailClaims.add(promotionMailClaim);
}
}
From d20173c84894798cd630715afd261f14e1b7f919 Mon Sep 17 00:00:00 2001
From: luoziyihao
Date: Tue, 13 Jun 2017 21:41:51 +0800
Subject: [PATCH 055/332] add comment
---
.../src/main/java/com/coderising/ood/srp/optimize/Product.java | 3 +--
.../java/com/coderising/ood/srp/optimize/ProductParser.java | 1 +
.../java/com/coderising/ood/srp/optimize/PromotionMailApp.java | 1 +
.../com/coderising/ood/srp/optimize/PromotionMailClaim.java | 1 +
.../coderising/ood/srp/optimize/PromotionMailableBehavior.java | 1 +
.../java/com/coderising/ood/srp/optimize/SmptPropeties.java | 1 +
.../src/main/java/com/coderising/ood/srp/optimize/User.java | 1 +
.../main/java/com/coderising/ood/srp/optimize/UserService.java | 1 +
8 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/Product.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/Product.java
index ffb440712f..3aef295085 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/Product.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/Product.java
@@ -1,8 +1,7 @@
package com.coderising.ood.srp.optimize;
-import lombok.Setter;
-
/**
+ * 产品对象
* Created by luoziyihao on 6/12/17.
*/
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/ProductParser.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/ProductParser.java
index 0c1cbba2e4..080c999ffa 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/ProductParser.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/ProductParser.java
@@ -7,6 +7,7 @@
import static com.coding.common.util.IOUtils2.readToStringList;
/**
+ * 产品文件解析器
* Created by luoziyihao on 6/12/17.
*/
public class ProductParser {
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailApp.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailApp.java
index ce49ae101b..6ee832307a 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailApp.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailApp.java
@@ -3,6 +3,7 @@
import java.util.List;
/**
+ * main 函数启动类
* Created by luoziyihao on 6/12/17.
*/
public class PromotionMailApp {
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java
index c1bd087af7..189b3ced17 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailClaim.java
@@ -4,6 +4,7 @@
import java.util.List;
/**
+ * 发发送邮件的必要参数 vo
* Created by luoziyihao on 6/12/17.
*/
public class PromotionMailClaim {
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java
index e350b1f735..ad37998e45 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/PromotionMailableBehavior.java
@@ -3,6 +3,7 @@
import java.util.List;
/**
+ * 发邮件的行为类
* Created by luoziyihao on 6/12/17.
*/
public class PromotionMailableBehavior {
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/SmptPropeties.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/SmptPropeties.java
index affdf946fd..c6664fafc3 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/SmptPropeties.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/SmptPropeties.java
@@ -1,6 +1,7 @@
package com.coderising.ood.srp.optimize;
/**
+ * 邮件服务器配置类
* Created by luoziyihao on 6/12/17.
*/
public class SmptPropeties {
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/User.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/User.java
index b7ec110914..996efadbb6 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/User.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/User.java
@@ -1,6 +1,7 @@
package com.coderising.ood.srp.optimize;
/**
+ * 用户类
* Created by luoziyihao on 6/12/17.
*/
public class User {
diff --git a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/UserService.java b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/UserService.java
index fe5317cc55..f5da2d3908 100644
--- a/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/UserService.java
+++ b/students/1204187480/code/homework/coderising/src/main/java/com/coderising/ood/srp/optimize/UserService.java
@@ -4,6 +4,7 @@
import java.util.List;
/**
+ * 用户service, 管理用户的数据
* Created by luoziyihao on 6/12/17.
*/
public class UserService {
From ca957fc96db0c1d27032225cbfaf4bbba3bf3179 Mon Sep 17 00:00:00 2001
From: liyang34
Date: Tue, 13 Jun 2017 22:04:25 +0800
Subject: [PATCH 056/332] =?UTF-8?q?360682644=E4=BD=9C=E4=B8=9A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
students/360682644/ood-assignment/pom.xml | 32 +++++++
.../com/coderising/ood/srp/Configuration.java | 25 ++++++
.../java/com/coderising/ood/srp/DBUtil.java | 24 +++++
.../com/coderising/ood/srp/IMailable.java | 10 +++
.../com/coderising/ood/srp/MailHosts.java | 23 +++++
.../com/coderising/ood/srp/MailReceiver.java | 38 ++++++++
.../com/coderising/ood/srp/MailSender.java | 87 +++++++++++++++++++
.../java/com/coderising/ood/srp/MailUtil.java | 21 +++++
.../java/com/coderising/ood/srp/Product.java | 28 ++++++
.../coderising/ood/srp/ReceiverService.java | 24 +++++
.../coderising/ood/srp/product_promotion.txt | 4 +
11 files changed, 316 insertions(+)
create mode 100644 students/360682644/ood-assignment/pom.xml
create mode 100644 students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
create mode 100644 students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
create mode 100644 students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/IMailable.java
create mode 100644 students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailHosts.java
create mode 100644 students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailReceiver.java
create mode 100644 students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailSender.java
create mode 100644 students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
create mode 100644 students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/Product.java
create mode 100644 students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/ReceiverService.java
create mode 100644 students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
diff --git a/students/360682644/ood-assignment/pom.xml b/students/360682644/ood-assignment/pom.xml
new file mode 100644
index 0000000000..cac49a5328
--- /dev/null
+++ b/students/360682644/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/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
new file mode 100644
index 0000000000..e17b664d48
--- /dev/null
+++ b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/Configuration.java
@@ -0,0 +1,25 @@
+package com.coderising.ood.srp;
+import java.util.HashMap;
+import java.util.Map;
+
+public class Configuration {
+
+ public static final String EMAIL_ADMIN = "email.admin";
+ private Map configurations = new HashMap();
+ private static Configuration configuration = new Configuration();
+ {
+ configurations.put(EMAIL_ADMIN, "admin@company.com");
+ }
+ /**
+ * 应该从配置文件读, 但是这里简化为直接从一个map 中去读
+ * @param key
+ * @return
+ */
+ public String getProperty(String key) {
+ return configurations.get(key);
+ }
+
+ public static Configuration getInstance(){
+ return configuration;
+ }
+}
diff --git a/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..e6f0ca21cb
--- /dev/null
+++ b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/DBUtil.java
@@ -0,0 +1,24 @@
+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, Product product){
+ List userList = new ArrayList();
+ for (int i = 1; i <= 3; i++) {
+ MailReceiver receiver = new MailReceiver();
+ receiver.setName("User" + i);
+ receiver.setEmail("aa@bb.com");
+ receiver.setMessage(product);
+ receiver.setSubject(product);
+ userList.add(receiver);
+ }
+ return userList;
+ }
+}
diff --git a/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/IMailable.java b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/IMailable.java
new file mode 100644
index 0000000000..019a96394e
--- /dev/null
+++ b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/IMailable.java
@@ -0,0 +1,10 @@
+package com.coderising.ood.srp;
+
+/**
+ * Created by 360682644 on 2017/6/13.
+ */
+public interface IMailable {
+
+ String toEmailText(String... params);
+ String toEmailSubject(String... params);
+}
diff --git a/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailHosts.java b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailHosts.java
new file mode 100644
index 0000000000..72a39d0601
--- /dev/null
+++ b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailHosts.java
@@ -0,0 +1,23 @@
+package com.coderising.ood.srp;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by 360682644 on 2017/6/13.
+ */
+public class MailHosts {
+
+ private List hosts = new ArrayList();
+ {
+ hosts.add("smtp.163.com");
+ hosts.add("smtp1.163.com");
+ }
+
+ public List getHosts() {
+ return hosts;
+ }
+ public void setHosts(List hosts) {
+ this.hosts = hosts;
+ }
+}
diff --git a/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailReceiver.java b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailReceiver.java
new file mode 100644
index 0000000000..250f594a89
--- /dev/null
+++ b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailReceiver.java
@@ -0,0 +1,38 @@
+package com.coderising.ood.srp;
+
+/**
+ * Created by 360682644 on 2017/6/13.
+ */
+public class MailReceiver {
+ private String name;
+ private String email;
+ private String message;
+ private String subject;
+ 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;
+ }
+ public String getMessage() {
+ return message;
+ }
+ public void setMessage(IMailable IMailable) {
+ message = IMailable.toEmailText(name);
+ }
+ public void setSubject(IMailable IMailable) {
+ subject = IMailable.toEmailSubject(null);
+ }
+ public void setMessage(String message) {
+ this.message = message;
+ }
+ public String getSubject() {
+ return subject;
+ }
+}
diff --git a/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailSender.java b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailSender.java
new file mode 100644
index 0000000000..4d22aff9c5
--- /dev/null
+++ b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailSender.java
@@ -0,0 +1,87 @@
+package com.coderising.ood.srp;
+
+import org.junit.Assert;
+
+import java.io.*;
+import java.util.*;
+
+public class MailSender {
+
+ protected MailHosts hosts = null;
+ protected String fromAddress = null;
+ protected InputStream is = null;
+ protected List receivers = null;
+ private Configuration config = Configuration.getInstance();
+
+ public void init() throws Exception {
+ setSMTPHost();
+ setFromAddress();
+ }
+
+ protected MailSender setEmailInput(InputStream is) throws IOException {
+ this.is = is;
+ return this;
+ }
+
+ protected MailSender setReceiver() throws IOException {
+ Assert.assertNotNull("is cannot be null", is);
+ List products = read(is);
+ receivers = new ArrayList();
+ for (Product product : products) {
+ receivers.addAll(ReceiverService.getInstance().loadMailingList(product));
+ }
+ return this;
+ }
+
+ protected void setSMTPHost() {
+ hosts = new MailHosts();
+ }
+
+ protected void setFromAddress() {
+ fromAddress = config.getProperty(Configuration.EMAIL_ADMIN);
+ }
+
+ protected List read(InputStream is) throws IOException {
+ BufferedReader br = null;
+ List products = new ArrayList();
+ try {
+ br = new BufferedReader(new InputStreamReader(is));
+ String temp;
+ while ((temp = br.readLine()) != null) {
+ String[] data = temp.split(" ");
+ Product product = new Product();
+ product.setProductID(data[0]);
+ product.setProductDesc(data[1]);
+ products.add(product);
+ System.out.println("产品ID = " + product.getProductID() + "\n");
+ System.out.println("产品描述 = " + product.getProductDesc() + "\n");
+ }
+ } catch (IOException e) {
+ throw e;
+ } finally {
+ br.close();
+ }
+ return products;
+ }
+
+ protected void send() throws IOException {
+ System.out.println("开始发送邮件");
+ if (receivers == null || receivers.isEmpty()) {
+ System.out.println("没有邮件发送");
+ return;
+ }
+ for (MailReceiver receiver : receivers) {
+ MailUtil.sendEmail(receiver.getEmail(), fromAddress, receiver.getSubject(), receiver.getMessage(), hosts);
+ }
+ }
+
+ public static void main(String[] args) throws Exception {
+
+ File f = new File("D:\\coding2017\\students\\360682644\\ood-assignment\\src\\main\\java\\com\\coderising\\ood\\srp\\product_promotion.txt");
+ MailSender pe = new MailSender();
+ pe.init();
+ pe.setEmailInput(new FileInputStream(f))
+ .setReceiver()
+ .send();
+ }
+}
diff --git a/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..2d4545cf06
--- /dev/null
+++ b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/MailUtil.java
@@ -0,0 +1,21 @@
+package com.coderising.ood.srp;
+
+public class MailUtil {
+
+ public static void sendEmail(String toAddress, String fromAddress, String subject, String message, MailHosts smtpHosts) {
+ for(String hosts : smtpHosts.getHosts()) {
+ try {
+ //假装发了一封邮件
+ 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());
+ break;
+ } catch (Exception e) {
+ System.err.println(String.format("通过SMTP服务器(%s)发送邮件失败: %s", hosts,e.getMessage()));
+ }
+ }
+ }
+}
diff --git a/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/Product.java b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/Product.java
new file mode 100644
index 0000000000..51dc9ea460
--- /dev/null
+++ b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/Product.java
@@ -0,0 +1,28 @@
+package com.coderising.ood.srp;
+
+/**
+ * Created by 360682644 on 2017/6/13.
+ */
+public class Product implements IMailable {
+ private String productID = null;
+ private String productDesc = null;
+
+ 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;
+ }
+ public String toEmailText(String... params) {
+ return "尊敬的 "+ params[0] +", 您关注的产品 " + productDesc + " 降价了,欢迎购买!" ;
+ }
+ public String toEmailSubject(String... params) {
+ return "您关注的产品降价了";
+ }
+}
diff --git a/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/ReceiverService.java b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/ReceiverService.java
new file mode 100644
index 0000000000..f5ea863389
--- /dev/null
+++ b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/ReceiverService.java
@@ -0,0 +1,24 @@
+package com.coderising.ood.srp;
+
+import java.util.List;
+
+/**
+ * Created by 360682644 on 2017/6/13.
+ */
+public class ReceiverService {
+
+ private final static ReceiverService service = new ReceiverService();
+ public static ReceiverService getInstance(){return service;}
+
+ public List loadMailingList(Product product){
+ return DBUtil.query(getLoadQuery(), product);
+ }
+
+ public String getLoadQuery(){
+ String query = "Select name from subscriptions "
+ + "where product_id= ? "
+ + "and send_mail=1 ";
+ System.out.println("loadQuery set");
+ return query;
+ }
+}
diff --git a/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/360682644/ood-assignment/src/main/java/com/coderising/ood/srp/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
From 2c7ddedf6e6a85f68d6624171b6b3df93e5f2be7 Mon Sep 17 00:00:00 2001
From: EightWolf <675554906@qq.com>
Date: Tue, 13 Jun 2017 22:04:55 +0800
Subject: [PATCH 057/332] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=20=EF=BC=9A=E7=AC=AC?=
=?UTF-8?q?=E4=B8=80=E6=AC=A1=E6=80=9D=E8=80=83=20=20=20=E8=BF=98=E6=9C=89?=
=?UTF-8?q?=E4=B8=8D=E8=B6=B3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/lilei/com/cn/Configuration.java | 27 +++++
.../src/lilei/com/cn/ConfigurationKeys.java | 13 +++
.../675554906/src/lilei/com/cn/DBUtil.java | 29 +++++
.../src/lilei/com/cn/MailAssemble.java | 100 ++++++++++++++++++
.../675554906/src/lilei/com/cn/MailUtil.java | 60 +++++++++++
.../src/lilei/com/cn/PromotionMail.java | 29 +++++
.../675554906/src/lilei/com/cn/ReadFile.java | 33 ++++++
.../src/lilei/com/cn/product_promotion.txt | 4 +
8 files changed, 295 insertions(+)
create mode 100644 students/675554906/src/lilei/com/cn/Configuration.java
create mode 100644 students/675554906/src/lilei/com/cn/ConfigurationKeys.java
create mode 100644 students/675554906/src/lilei/com/cn/DBUtil.java
create mode 100644 students/675554906/src/lilei/com/cn/MailAssemble.java
create mode 100644 students/675554906/src/lilei/com/cn/MailUtil.java
create mode 100644 students/675554906/src/lilei/com/cn/PromotionMail.java
create mode 100644 students/675554906/src/lilei/com/cn/ReadFile.java
create mode 100644 students/675554906/src/lilei/com/cn/product_promotion.txt
diff --git a/students/675554906/src/lilei/com/cn/Configuration.java b/students/675554906/src/lilei/com/cn/Configuration.java
new file mode 100644
index 0000000000..c8020595fd
--- /dev/null
+++ b/students/675554906/src/lilei/com/cn/Configuration.java
@@ -0,0 +1,27 @@
+package lilei.com.cn;
+import java.util.HashMap;
+import java.util.Map;
+/**
+ * Configuration 读取/获取配置信息类
+ * 唯一能引起此类变化的是配置文件的改变
+ *
+ * */
+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/675554906/src/lilei/com/cn/ConfigurationKeys.java b/students/675554906/src/lilei/com/cn/ConfigurationKeys.java
new file mode 100644
index 0000000000..ddcaeb4def
--- /dev/null
+++ b/students/675554906/src/lilei/com/cn/ConfigurationKeys.java
@@ -0,0 +1,13 @@
+package lilei.com.cn;
+/**
+ * ConfigurationKeys 配置信息定义类
+ * 个人理解,唯一能引发变化的是“需求”比如,要增加一个KEY
+ *
+ * */
+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/675554906/src/lilei/com/cn/DBUtil.java b/students/675554906/src/lilei/com/cn/DBUtil.java
new file mode 100644
index 0000000000..9ae43cc7dc
--- /dev/null
+++ b/students/675554906/src/lilei/com/cn/DBUtil.java
@@ -0,0 +1,29 @@
+package lilei.com.cn;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+ /**
+ * DBUtil 连接数据库,获取数据
+ * 个人理解,此类只是负责数据库的连接,和数据的读取,存储,修改
+ *
+ * */
+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/675554906/src/lilei/com/cn/MailAssemble.java b/students/675554906/src/lilei/com/cn/MailAssemble.java
new file mode 100644
index 0000000000..8c17e5f3bf
--- /dev/null
+++ b/students/675554906/src/lilei/com/cn/MailAssemble.java
@@ -0,0 +1,100 @@
+package lilei.com.cn;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+/**
+ * MailAssemble 组装邮件类
+ * 个人理解, 此类的职责是组装邮件,而邮件是根据Configuration(配置信息类)、ReadFile(读取信息类)来组成的,这两个类也是引起变化的因素
+ *
+ * */
+public class MailAssemble {
+ 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 = new Configuration();
+ private static ReadFile rf = new ReadFile();;
+
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+ //组装信息
+ public void assembleMail() throws Exception{
+ String data[] = rf.readFile();
+ setProductID(data[0]);
+ setProductDesc(data[1]);
+ setSMTPHost();
+ setAltSMTPHost();
+ setFromAddress();
+ setLoadQuery();
+ }
+
+ protected List loadMailingList() throws Exception {
+ return DBUtil.query(this.sendMailQuery);
+ }
+
+ protected void configureEMail(HashMap userInfo) throws IOException
+ {
+ toAddress = (String) userInfo.get(EMAIL_KEY);
+ if (toAddress.length() > 0)
+ setMessage(userInfo);
+ }
+
+ 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 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);
+
+ }
+
+ private void setProductDesc(String desc) {
+ this.productDesc = desc;
+ }
+}
diff --git a/students/675554906/src/lilei/com/cn/MailUtil.java b/students/675554906/src/lilei/com/cn/MailUtil.java
new file mode 100644
index 0000000000..2bd129dc75
--- /dev/null
+++ b/students/675554906/src/lilei/com/cn/MailUtil.java
@@ -0,0 +1,60 @@
+package lilei.com.cn;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * MailUtil 邮件方法类
+ * 个人理解,唯一引起变化的就是邮件发送方法的改变
+ *
+ * */
+public class MailUtil {
+
+ private static MailAssemble assembleMail = new MailAssemble();
+
+ public static void sendEmail(MailAssemble assembleMail , boolean debug) {
+ //假装发了一封邮件
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("From:").append(assembleMail.fromAddress).append("\n");
+ buffer.append("To:").append(assembleMail.toAddress).append("\n");
+ buffer.append("Subject:").append(assembleMail.subject).append("\n");
+ buffer.append("Content:").append(assembleMail.message).append("\n");
+ System.out.println(buffer.toString());
+
+ }
+
+ protected void sendEMails(boolean debug) throws Exception
+ {
+ assembleMail.assembleMail();
+ List mailingList = assembleMail.loadMailingList();
+ System.out.println("开始发送邮件");
+ if (mailingList != null) {
+ Iterator iter = mailingList.iterator();
+ while (iter.hasNext()) {
+ assembleMail.configureEMail((HashMap) iter.next());
+ try
+ {
+ if (assembleMail.toAddress.length() > 0)
+ sendEmail(assembleMail, debug);
+ }
+ catch (Exception e)
+ {
+
+ try {
+ sendEmail(assembleMail, debug);
+
+ } catch (Exception e2)
+ {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
+ }
+ }
+ }
+ }
+
+ else {
+ System.out.println("没有邮件发送");
+ }
+ }
+}
diff --git a/students/675554906/src/lilei/com/cn/PromotionMail.java b/students/675554906/src/lilei/com/cn/PromotionMail.java
new file mode 100644
index 0000000000..7522bab6b1
--- /dev/null
+++ b/students/675554906/src/lilei/com/cn/PromotionMail.java
@@ -0,0 +1,29 @@
+package lilei.com.cn;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+/**
+ * PromotionMail 推送邮件类
+ * 个人理解, 此类唯一能引起变化的就是发送邮件的方法变化
+ *
+ * */
+public class PromotionMail {
+
+ private static MailUtil mailUtil;
+ public static void main(String[] args) throws Exception {
+
+ boolean emailDebug = false;
+ PromotionMail pe = new PromotionMail(emailDebug);
+ }
+
+ public PromotionMail(boolean mailDebug) throws Exception {
+ mailUtil = new MailUtil();
+ mailUtil.sendEMails(mailDebug);
+ }
+}
diff --git a/students/675554906/src/lilei/com/cn/ReadFile.java b/students/675554906/src/lilei/com/cn/ReadFile.java
new file mode 100644
index 0000000000..e13a9d644e
--- /dev/null
+++ b/students/675554906/src/lilei/com/cn/ReadFile.java
@@ -0,0 +1,33 @@
+package lilei.com.cn;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+/**
+ * ReadFile 读取文件类
+ * 个人理解, 唯一能引发变化的就是文件路径的变动
+ *
+ * */
+public class ReadFile {
+
+ private File file;
+ private String filePath = "F:\\product_promotion.txt";
+
+ protected String[] readFile() throws IOException // @02C
+ {
+ BufferedReader br = null;
+ try {
+ file = new File(filePath);
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+ return data;
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ }
+}
diff --git a/students/675554906/src/lilei/com/cn/product_promotion.txt b/students/675554906/src/lilei/com/cn/product_promotion.txt
new file mode 100644
index 0000000000..0c0124cc61
--- /dev/null
+++ b/students/675554906/src/lilei/com/cn/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
From bb922a12e63663fc1e18a53027cf3b3af550d4d4 Mon Sep 17 00:00:00 2001
From: Arthur <465034663@qq.com>
Date: Tue, 13 Jun 2017 22:09:35 +0800
Subject: [PATCH 058/332] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90?=
=?UTF-8?q?=E4=BA=A4=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
students/465034663/README.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 students/465034663/README.md
diff --git a/students/465034663/README.md b/students/465034663/README.md
new file mode 100644
index 0000000000..773f79cede
--- /dev/null
+++ b/students/465034663/README.md
@@ -0,0 +1 @@
+OOD面向对象
\ No newline at end of file
From a4a1a1671bc210408582bfb5b4175e7350ef589b Mon Sep 17 00:00:00 2001
From: jiangzhimin
Date: Tue, 13 Jun 2017 22:59:41 +0800
Subject: [PATCH 059/332] the first time commit
---
students/630727874/README.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 students/630727874/README.md
diff --git a/students/630727874/README.md b/students/630727874/README.md
new file mode 100644
index 0000000000..fbfe6df257
--- /dev/null
+++ b/students/630727874/README.md
@@ -0,0 +1 @@
+This is my first git commit
From bf1d250c989711a8ae240a779a4726645dd9a8b5 Mon Sep 17 00:00:00 2001
From: jimmy
Date: Tue, 13 Jun 2017 23:07:56 +0800
Subject: [PATCH 060/332] Revert "the first time commit"
This reverts commit a4a1a1671bc210408582bfb5b4175e7350ef589b.
---
students/630727874/README.md | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 students/630727874/README.md
diff --git a/students/630727874/README.md b/students/630727874/README.md
deleted file mode 100644
index fbfe6df257..0000000000
--- a/students/630727874/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This is my first git commit
From a35a5f9356ec0654ef4d351d4218d19832c1e56a Mon Sep 17 00:00:00 2001
From: jimmy
Date: Tue, 13 Jun 2017 23:19:17 +0800
Subject: [PATCH 061/332] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=87=AA=E5=B7=B1?=
=?UTF-8?q?=E7=9A=84=E7=9B=AE=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
students/63072784/README.md | 1 +
1 file changed, 1 insertion(+)
create mode 100644 students/63072784/README.md
diff --git a/students/63072784/README.md b/students/63072784/README.md
new file mode 100644
index 0000000000..f5e57e7b78
--- /dev/null
+++ b/students/63072784/README.md
@@ -0,0 +1 @@
+这是我的目录
From 3f0e0a912f0a9237784e17ec566390967d78863e Mon Sep 17 00:00:00 2001
From: jyp
Date: Tue, 13 Jun 2017 23:47:05 +0800
Subject: [PATCH 062/332] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/coderising/ood/srp/{ => config}/Configuration.java | 0
.../com/coderising/ood/srp/{ => config}/ConfigurationKeys.java | 0
.../src/main/java/com/coderising/ood/srp/{ => util}/DBUtil.java | 0
.../src/main/java/com/coderising/ood/srp/{ => util}/MailUtil.java | 0
4 files changed, 0 insertions(+), 0 deletions(-)
rename students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/{ => config}/Configuration.java (100%)
rename students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/{ => config}/ConfigurationKeys.java (100%)
rename students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/{ => util}/DBUtil.java (100%)
rename students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/{ => util}/MailUtil.java (100%)
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/Configuration.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/Configuration.java
similarity index 100%
rename from students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/Configuration.java
rename to students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/Configuration.java
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/ConfigurationKeys.java
similarity index 100%
rename from students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
rename to students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/ConfigurationKeys.java
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/util/DBUtil.java
similarity index 100%
rename from students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/DBUtil.java
rename to students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/util/DBUtil.java
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/util/MailUtil.java
similarity index 100%
rename from students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/MailUtil.java
rename to students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/util/MailUtil.java
From 9ba07844b62008a74ee078631541be73e79cf15c Mon Sep 17 00:00:00 2001
From: zhanghaojie
Date: Wed, 14 Jun 2017 00:08:46 +0800
Subject: [PATCH 063/332] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E5=91=A8=20=E9=87=8D?=
=?UTF-8?q?=E6=9E=84=E4=BF=83=E9=94=80=E9=82=AE=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
students/550727632/pom.xml | 37 ++++++++++++
.../com/coderising/ood/srp/Configuration.java | 23 ++++++++
.../coderising/ood/srp/ConfigurationKeys.java | 9 +++
.../java/com/coderising/ood/srp/DBUtil.java | 31 ++++++++++
.../java/com/coderising/ood/srp/FileUtil.java | 28 ++++++++++
.../java/com/coderising/ood/srp/MailUtil.java | 56 +++++++++++++++++++
.../java/com/coderising/ood/srp/Product.java | 29 ++++++++++
.../com/coderising/ood/srp/PromotionMail.java | 37 ++++++++++++
.../java/com/coderising/ood/srp/User.java | 34 +++++++++++
.../coderising/ood/srp/product_promotion.txt | 4 ++
10 files changed, 288 insertions(+)
create mode 100644 students/550727632/pom.xml
create mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/Configuration.java
create mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
create mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/DBUtil.java
create mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/FileUtil.java
create mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/MailUtil.java
create mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/Product.java
create mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/PromotionMail.java
create mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/User.java
create mode 100644 students/550727632/src/main/java/com/coderising/ood/srp/product_promotion.txt
diff --git a/students/550727632/pom.xml b/students/550727632/pom.xml
new file mode 100644
index 0000000000..3483fcca18
--- /dev/null
+++ b/students/550727632/pom.xml
@@ -0,0 +1,37 @@
+
+ 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/srp/Configuration.java b/students/550727632/src/main/java/com/coderising/ood/srp/Configuration.java
new file mode 100644
index 0000000000..f328c1816a
--- /dev/null
+++ b/students/550727632/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/550727632/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java b/students/550727632/src/main/java/com/coderising/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..8695aed644
--- /dev/null
+++ b/students/550727632/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/550727632/src/main/java/com/coderising/ood/srp/DBUtil.java b/students/550727632/src/main/java/com/coderising/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..3b73afe420
--- /dev/null
+++ b/students/550727632/src/main/java/com/coderising/ood/srp/DBUtil.java
@@ -0,0 +1,31 @@
+package com.coderising.ood.srp;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DBUtil {
+
+ /**
+ * 应该从数据库读, 但是简化为直接生成。
+ *
+ * @param sql
+ * @return
+ */
+ public static List query(String sql) {
+
+ List userList = new ArrayList<>();
+ for (int i = 1; i <= 3; i++) {
+ User user = new User("User" + i, "aa@bb.com");
+ userList.add(user);
+ }
+
+ return userList;
+ }
+
+ public static List loadProductUsers(Product product){
+ String sql = "Select name from subscriptions "
+ + "where product_id= '" + product.getProductID() +"' "
+ + "and send_mail=1 ";
+ return query(sql);
+ }
+}
diff --git a/students/550727632/src/main/java/com/coderising/ood/srp/FileUtil.java b/students/550727632/src/main/java/com/coderising/ood/srp/FileUtil.java
new file mode 100644
index 0000000000..0054feb8e0
--- /dev/null
+++ b/students/550727632/src/main/java/com/coderising/ood/srp/FileUtil.java
@@ -0,0 +1,28 @@
+package com.coderising.ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+public class FileUtil {
+
+ public static Product readProductFile(File file) throws IOException {
+ BufferedReader br = null;
+ Product product = new Product();
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+ product.setProductID(data[0]);
+ product.setProductDesc(data[1]);
+ System.out.println(product.toString());
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ return product;
+ }
+}
diff --git a/students/550727632/src/main/java/com/coderising/ood/srp/MailUtil.java b/students/550727632/src/main/java/com/coderising/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..a61ab7e52c
--- /dev/null
+++ b/students/550727632/src/main/java/com/coderising/ood/srp/MailUtil.java
@@ -0,0 +1,56 @@
+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
new file mode 100644
index 0000000000..fd107fa4f4
--- /dev/null
+++ b/students/550727632/src/main/java/com/coderising/ood/srp/Product.java
@@ -0,0 +1,29 @@
+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
new file mode 100644
index 0000000000..23d48b0ae1
--- /dev/null
+++ b/students/550727632/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -0,0 +1,37 @@
+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
new file mode 100644
index 0000000000..b63f655e7c
--- /dev/null
+++ b/students/550727632/src/main/java/com/coderising/ood/srp/User.java
@@ -0,0 +1,34 @@
+package com.coderising.ood.srp;
+
+public class User {
+
+ private String name;
+ private String email;
+
+ public User() {
+ super();
+ }
+
+ public User(String name, String email) {
+ super();
+ this.name = name;
+ this.email = email;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+}
diff --git a/students/550727632/src/main/java/com/coderising/ood/srp/product_promotion.txt b/students/550727632/src/main/java/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..0c0124cc61
--- /dev/null
+++ b/students/550727632/src/main/java/com/coderising/ood/srp/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
From 51be40786b1f53a2e0cff22a15620d02d29ff19d Mon Sep 17 00:00:00 2001
From: Star <294022181@qq.com>
Date: Wed, 14 Jun 2017 00:15:47 +0800
Subject: [PATCH 064/332] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BF=83=E9=94=80?=
=?UTF-8?q?=E9=82=AE=E4=BB=B6=E5=8F=91=E9=80=81=E7=A8=8B=E5=BA=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ood-assignment/product_promotion.txt | 4 +
.../com/coderising/ood/srp/Configuration.java | 23 +++++
.../coderising/ood/srp/ConfigurationKeys.java | 9 ++
.../src/com/coderising/ood/srp/DBUtil.java | 25 ++++++
.../src/com/coderising/ood/srp/Email.java | 85 +++++++++++++++++++
.../src/com/coderising/ood/srp/MailUtil.java | 18 ++++
.../src/com/coderising/ood/srp/Product.java | 23 +++++
.../com/coderising/ood/srp/ProductDao.java | 36 ++++++++
.../com/coderising/ood/srp/PromotionMail.java | 70 +++++++++++++++
.../coderising/ood/srp/SubscriptionDao.java | 15 ++++
.../coderising/ood/srp/product_promotion.txt | 4 +
11 files changed, 312 insertions(+)
create mode 100644 students/294022181/ood-assignment/product_promotion.txt
create mode 100644 students/294022181/ood-assignment/src/com/coderising/ood/srp/Configuration.java
create mode 100644 students/294022181/ood-assignment/src/com/coderising/ood/srp/ConfigurationKeys.java
create mode 100644 students/294022181/ood-assignment/src/com/coderising/ood/srp/DBUtil.java
create mode 100644 students/294022181/ood-assignment/src/com/coderising/ood/srp/Email.java
create mode 100644 students/294022181/ood-assignment/src/com/coderising/ood/srp/MailUtil.java
create mode 100644 students/294022181/ood-assignment/src/com/coderising/ood/srp/Product.java
create mode 100644 students/294022181/ood-assignment/src/com/coderising/ood/srp/ProductDao.java
create mode 100644 students/294022181/ood-assignment/src/com/coderising/ood/srp/PromotionMail.java
create mode 100644 students/294022181/ood-assignment/src/com/coderising/ood/srp/SubscriptionDao.java
create mode 100644 students/294022181/ood-assignment/src/com/coderising/ood/srp/product_promotion.txt
diff --git a/students/294022181/ood-assignment/product_promotion.txt b/students/294022181/ood-assignment/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/294022181/ood-assignment/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/294022181/ood-assignment/src/com/coderising/ood/srp/Configuration.java b/students/294022181/ood-assignment/src/com/coderising/ood/srp/Configuration.java
new file mode 100644
index 0000000000..f328c1816a
--- /dev/null
+++ b/students/294022181/ood-assignment/src/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/294022181/ood-assignment/src/com/coderising/ood/srp/ConfigurationKeys.java b/students/294022181/ood-assignment/src/com/coderising/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..8695aed644
--- /dev/null
+++ b/students/294022181/ood-assignment/src/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/294022181/ood-assignment/src/com/coderising/ood/srp/DBUtil.java b/students/294022181/ood-assignment/src/com/coderising/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..82e9261d18
--- /dev/null
+++ b/students/294022181/ood-assignment/src/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/294022181/ood-assignment/src/com/coderising/ood/srp/Email.java b/students/294022181/ood-assignment/src/com/coderising/ood/srp/Email.java
new file mode 100644
index 0000000000..956cb57493
--- /dev/null
+++ b/students/294022181/ood-assignment/src/com/coderising/ood/srp/Email.java
@@ -0,0 +1,85 @@
+package com.coderising.ood.srp;
+
+public class Email {
+ private String smtpHost;
+ private String altSmtpHost;
+ private String fromAddress;
+ private String toAddress;
+ private String subject;
+ private String message;
+ private boolean debug;
+
+ public Email() {
+
+ }
+
+ 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 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 getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public boolean isDebug() {
+ return debug;
+ }
+
+ public void setDebug(boolean debug) {
+ this.debug = debug;
+ }
+
+ public void sendToTarget() {
+ 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/294022181/ood-assignment/src/com/coderising/ood/srp/MailUtil.java b/students/294022181/ood-assignment/src/com/coderising/ood/srp/MailUtil.java
new file mode 100644
index 0000000000..9f9e749af7
--- /dev/null
+++ b/students/294022181/ood-assignment/src/com/coderising/ood/srp/MailUtil.java
@@ -0,0 +1,18 @@
+package com.coderising.ood.srp;
+
+public class MailUtil {
+
+ public static void sendEmail(String toAddress, String fromAddress, String subject, String message, String smtpHost,
+ boolean debug) {
+ //假装发了一封邮件
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("From:").append(fromAddress).append("\n");
+ buffer.append("To:").append(toAddress).append("\n");
+ buffer.append("Subject:").append(subject).append("\n");
+ buffer.append("Content:").append(message).append("\n");
+ System.out.println(buffer.toString());
+
+ }
+
+
+}
diff --git a/students/294022181/ood-assignment/src/com/coderising/ood/srp/Product.java b/students/294022181/ood-assignment/src/com/coderising/ood/srp/Product.java
new file mode 100644
index 0000000000..fbb4f29db3
--- /dev/null
+++ b/students/294022181/ood-assignment/src/com/coderising/ood/srp/Product.java
@@ -0,0 +1,23 @@
+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;
+ }
+
+}
diff --git a/students/294022181/ood-assignment/src/com/coderising/ood/srp/ProductDao.java b/students/294022181/ood-assignment/src/com/coderising/ood/srp/ProductDao.java
new file mode 100644
index 0000000000..ad5c53356e
--- /dev/null
+++ b/students/294022181/ood-assignment/src/com/coderising/ood/srp/ProductDao.java
@@ -0,0 +1,36 @@
+package com.coderising.ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+public class ProductDao {
+
+ public Product getProduct(String productFileName) throws IOException {
+ BufferedReader br = null;
+ Product product = null;
+
+ try {
+ File file = new File(productFileName);
+ 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 = new Product();
+ product.setProductID(productID);
+ product.setProductDesc(productDesc);
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+
+ return product;
+ }
+}
diff --git a/students/294022181/ood-assignment/src/com/coderising/ood/srp/PromotionMail.java b/students/294022181/ood-assignment/src/com/coderising/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..1cda5d5859
--- /dev/null
+++ b/students/294022181/ood-assignment/src/com/coderising/ood/srp/PromotionMail.java
@@ -0,0 +1,70 @@
+package com.coderising.ood.srp;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+public class PromotionMail {
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+ private Configuration config;
+ private ProductDao productDao;
+ private SubscriptionDao subscriptionDao;
+
+ public static void main(String[] args) throws Exception {
+ boolean emailDebug = false;
+ String productFileName = "./product_promotion.txt";
+ PromotionMail pe = new PromotionMail(productFileName, emailDebug);
+ }
+
+ public PromotionMail(String productFileName, boolean mailDebug) throws Exception {
+ config = new Configuration();
+ productDao = new ProductDao();
+ subscriptionDao = new SubscriptionDao();
+ //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
+ Product product = productDao.getProduct(productFileName);
+
+ if (product == null) {
+ return;
+ }
+
+ sendEMails(mailDebug, product, subscriptionDao.loadMailingList(product.getProductID()));
+ }
+
+ protected void sendEMails(boolean debug, Product product, List mailingList) throws IOException {
+
+ System.out.println("开始发送邮件");
+
+ if (mailingList != null) {
+ Email email = new Email();
+ String smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ String altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+ String fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ Iterator iter = mailingList.iterator();
+
+ while (iter.hasNext()) {
+ HashMap userInfo = (HashMap) iter.next();
+ String toAddress = (String) userInfo.get(EMAIL_KEY);
+
+ if (toAddress.length() > 0) {
+ String name = (String) userInfo.get(NAME_KEY);
+ String subject = "您关注的产品降价了";
+ String message = "尊敬的 " + name + ", 您关注的产品 " + product.getProductDesc() + " 降价了,欢迎购买!" ;
+ email.setFromAddress(fromAddress);
+ email.setToAddress(toAddress);
+ email.setSmtpHost(smtpHost);
+ email.setAltSmtpHost(altSmtpHost);
+ email.setSubject(subject);
+ email.setMessage(message);
+ email.setDebug(debug);
+ email.sendToTarget();
+ }
+ }
+ } else {
+ System.out.println("没有邮件发送");
+ }
+
+ }
+}
diff --git a/students/294022181/ood-assignment/src/com/coderising/ood/srp/SubscriptionDao.java b/students/294022181/ood-assignment/src/com/coderising/ood/srp/SubscriptionDao.java
new file mode 100644
index 0000000000..2cd57ed644
--- /dev/null
+++ b/students/294022181/ood-assignment/src/com/coderising/ood/srp/SubscriptionDao.java
@@ -0,0 +1,15 @@
+package com.coderising.ood.srp;
+
+import java.util.List;
+
+public class SubscriptionDao {
+
+ public List loadMailingList(String productID) throws Exception {
+ String sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + productID +"' "
+ + "and send_mail=1 ";
+
+ System.out.println("loadQuery set");
+ return DBUtil.query(sendMailQuery);
+ }
+}
diff --git a/students/294022181/ood-assignment/src/com/coderising/ood/srp/product_promotion.txt b/students/294022181/ood-assignment/src/com/coderising/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/294022181/ood-assignment/src/com/coderising/ood/srp/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
From c3bfe5112c9dee7dbb803c272026c333dc8b7e5d Mon Sep 17 00:00:00 2001
From: MAC
Date: Wed, 14 Jun 2017 00:15:58 +0800
Subject: [PATCH 065/332] srp first commit
---
students/89460886/ood/srp/Configuration.java | 25 ++++++++
.../89460886/ood/srp/ConfigurationKeys.java | 9 +++
students/89460886/ood/srp/DBUtil.java | 43 ++++++++++++++
students/89460886/ood/srp/IRequest.java | 16 ++++++
students/89460886/ood/srp/MailRequest.java | 57 +++++++++++++++++++
students/89460886/ood/srp/Product.java | 26 +++++++++
.../89460886/ood/srp/ProductRepository.java | 38 +++++++++++++
students/89460886/ood/srp/PromotionMail.java | 42 ++++++++++++++
students/89460886/ood/srp/SmtpClient.java | 45 +++++++++++++++
students/89460886/ood/srp/User.java | 26 +++++++++
.../89460886/ood/srp/product_promotion.txt | 4 ++
11 files changed, 331 insertions(+)
create mode 100644 students/89460886/ood/srp/Configuration.java
create mode 100644 students/89460886/ood/srp/ConfigurationKeys.java
create mode 100644 students/89460886/ood/srp/DBUtil.java
create mode 100644 students/89460886/ood/srp/IRequest.java
create mode 100644 students/89460886/ood/srp/MailRequest.java
create mode 100644 students/89460886/ood/srp/Product.java
create mode 100644 students/89460886/ood/srp/ProductRepository.java
create mode 100644 students/89460886/ood/srp/PromotionMail.java
create mode 100644 students/89460886/ood/srp/SmtpClient.java
create mode 100644 students/89460886/ood/srp/User.java
create mode 100644 students/89460886/ood/srp/product_promotion.txt
diff --git a/students/89460886/ood/srp/Configuration.java b/students/89460886/ood/srp/Configuration.java
new file mode 100644
index 0000000000..20cb685583
--- /dev/null
+++ b/students/89460886/ood/srp/Configuration.java
@@ -0,0 +1,25 @@
+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");
+ }
+
+ /**
+ * 应该从配置文件读, 但是这里简化为直接从一个map 中去读
+ * @param key
+ * @return
+ */
+ public String getProperty(String key) {
+ return configurations.get(key);
+ }
+
+
+}
diff --git a/students/89460886/ood/srp/ConfigurationKeys.java b/students/89460886/ood/srp/ConfigurationKeys.java
new file mode 100644
index 0000000000..47cf4153b3
--- /dev/null
+++ b/students/89460886/ood/srp/ConfigurationKeys.java
@@ -0,0 +1,9 @@
+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";
+
+}
diff --git a/students/89460886/ood/srp/DBUtil.java b/students/89460886/ood/srp/DBUtil.java
new file mode 100644
index 0000000000..89dbacc9bf
--- /dev/null
+++ b/students/89460886/ood/srp/DBUtil.java
@@ -0,0 +1,43 @@
+package 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.setName("User" + i);
+ user.setEmail("aa@bb.com");
+ userList.add(user);
+ }
+ return userList;
+ }
+
+ public static List queryValidUserList(String sql) {
+ List userList = query(sql);
+ List resultList = new ArrayList<>();
+ for (int i = 0, len = userList.size(); i < len; i++) {
+ String email = userList.get(i).getEmail();
+ if (email != null && email.length() > 0) {
+ resultList.add(userList.get(i));
+ }
+ }
+ return resultList;
+ }
+
+ public static List queryUserListByProduct(Product product) {
+ String sendMailQuery = "Select name from subscriptions "
+ + "where product_id= '" + product.getProductID() + "' "
+ + "and send_mail=1 ";
+ return queryValidUserList(sendMailQuery);
+ }
+
+}
diff --git a/students/89460886/ood/srp/IRequest.java b/students/89460886/ood/srp/IRequest.java
new file mode 100644
index 0000000000..5d15088f60
--- /dev/null
+++ b/students/89460886/ood/srp/IRequest.java
@@ -0,0 +1,16 @@
+package ood.srp;
+
+import java.util.Map;
+
+/**
+ * @author jiaxun
+ */
+public interface IRequest {
+
+ Map getHeaders();
+
+ Map getParams();
+
+ String getUrl();
+
+}
diff --git a/students/89460886/ood/srp/MailRequest.java b/students/89460886/ood/srp/MailRequest.java
new file mode 100644
index 0000000000..62b9c6ed52
--- /dev/null
+++ b/students/89460886/ood/srp/MailRequest.java
@@ -0,0 +1,57 @@
+package ood.srp;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author jiaxun
+ */
+public class MailRequest implements IRequest {
+
+ private String toAddress;
+ private String subject;
+ private String message;
+
+ @Override
+ public Map getHeaders() {
+ return null;
+ }
+
+ @Override
+ public Map getParams() {
+ Map map = new HashMap<>();
+ map.put("toAddress", toAddress);
+ map.put("subject", subject);
+ map.put("message", message);
+ return map;
+ }
+
+ @Override
+ public String getUrl() {
+ return null;
+ }
+
+ public String getToAddress() {
+ return toAddress;
+ }
+
+ public void setToAddress(String toAddress) {
+ this.toAddress = toAddress;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public String getSubject() {
+ return subject;
+ }
+
+ public void setSubject(String subject) {
+ this.subject = subject;
+ }
+}
diff --git a/students/89460886/ood/srp/Product.java b/students/89460886/ood/srp/Product.java
new file mode 100644
index 0000000000..f92235f0a7
--- /dev/null
+++ b/students/89460886/ood/srp/Product.java
@@ -0,0 +1,26 @@
+package ood.srp;
+
+/**
+ * @author jiaxun
+ */
+public class Product {
+
+ private String productID = null;
+ private String productDesc = null;
+
+ public String getProductID() {
+ return productID;
+ }
+
+ public String getProductDesc() {
+ return productDesc;
+ }
+
+ public void setProductID(String productID) {
+ this.productID = productID;
+ }
+
+ public void setProductDesc(String productDesc) {
+ this.productDesc = productDesc;
+ }
+}
diff --git a/students/89460886/ood/srp/ProductRepository.java b/students/89460886/ood/srp/ProductRepository.java
new file mode 100644
index 0000000000..0c987504ac
--- /dev/null
+++ b/students/89460886/ood/srp/ProductRepository.java
@@ -0,0 +1,38 @@
+package ood.srp;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+/**
+ * @author jiaxun
+ */
+public class ProductRepository {
+
+ public static Product getProductFromFile(File file) throws IOException {
+ Product product = null;
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ String line = br.readLine();
+ String[] data = line.split(" ");
+
+ product = new Product();
+ product.setProductID(data[0]);
+ product.setProductDesc(data[1]);
+
+ System.out.println("产品ID = " + product.getProductID() + "\n");
+ System.out.println("产品描述 = " + product.getProductDesc() + "\n");
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ if (br != null) {
+ br.close();
+ }
+ }
+ return product;
+ }
+
+}
diff --git a/students/89460886/ood/srp/PromotionMail.java b/students/89460886/ood/srp/PromotionMail.java
new file mode 100644
index 0000000000..199a80a7cc
--- /dev/null
+++ b/students/89460886/ood/srp/PromotionMail.java
@@ -0,0 +1,42 @@
+package ood.srp;
+
+import java.io.File;
+import java.util.List;
+
+public class PromotionMail {
+
+ public static void main(String[] args) throws Exception {
+
+ File file = new File("/Users/jiaxun/OpenSource/Algorithm/src/ood/srp/product_promotion.txt");
+ boolean emailDebug = false;
+
+ //读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
+ Product product = ProductRepository.getProductFromFile(file);
+
+ List userList = DBUtil.queryUserListByProduct(product);
+
+ PromotionMail pe = new PromotionMail();
+
+ pe.sendEMails(emailDebug, userList, product);
+ }
+
+ protected void sendEMails(boolean debug, List userList, Product product) {
+
+ System.out.println("开始发送邮件");
+
+ if (userList != null) {
+ for (int i = 0, len = userList.size(); i < len; i++) {
+ MailRequest mailRequest = new MailRequest();
+
+ mailRequest.setSubject("您关注的产品降价了");
+ mailRequest.setMessage("尊敬的 " + userList.get(i).getName() + ", 您关注的产品 " + product.getProductDesc() + " 降价了,欢迎购买!");
+ mailRequest.setToAddress(userList.get(i).getEmail());
+
+ SmtpClient.sharedInstance().sendEmail(mailRequest, debug);
+ }
+ } else {
+ System.out.println("没有邮件发送");
+ }
+ }
+
+}
diff --git a/students/89460886/ood/srp/SmtpClient.java b/students/89460886/ood/srp/SmtpClient.java
new file mode 100644
index 0000000000..a0c52b6fc3
--- /dev/null
+++ b/students/89460886/ood/srp/SmtpClient.java
@@ -0,0 +1,45 @@
+package ood.srp;
+
+import java.util.Map;
+
+/**
+ * @author jiaxun
+ */
+public class SmtpClient {
+
+ private static volatile SmtpClient instance = null;
+
+ private String smtpHost = null;
+ private String altSmtpHost = null;
+ private String fromAddress = null;
+
+ private SmtpClient() {
+ Configuration config = new Configuration();
+ smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+ fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+ public static SmtpClient sharedInstance() {
+ if (instance == null) {
+ synchronized (SmtpClient.class) {
+ if (instance == null) {
+ return new SmtpClient();
+ }
+ }
+ }
+ return instance;
+ }
+
+ public void sendEmail(IRequest request, boolean debug) {
+ //假装发了一封邮件
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("From:").append(fromAddress).append("\n");
+ Map params = request.getParams();
+ // 这里为了演示方便,直接根据请求的 key 获取内容
+ buffer.append("To:").append(params.get("toAddress")).append("\n");
+ buffer.append("Subject:").append(params.get("subject")).append("\n");
+ buffer.append("Content:").append(params.get("message")).append("\n");
+ System.out.println(buffer.toString());
+ }
+}
diff --git a/students/89460886/ood/srp/User.java b/students/89460886/ood/srp/User.java
new file mode 100644
index 0000000000..71bc2b7702
--- /dev/null
+++ b/students/89460886/ood/srp/User.java
@@ -0,0 +1,26 @@
+package ood.srp;
+
+/**
+ * @author jiaxun
+ */
+public class User {
+
+ private String name;
+ private String email;
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/students/89460886/ood/srp/product_promotion.txt b/students/89460886/ood/srp/product_promotion.txt
new file mode 100644
index 0000000000..b7a974adb3
--- /dev/null
+++ b/students/89460886/ood/srp/product_promotion.txt
@@ -0,0 +1,4 @@
+P8756 iPhone8
+P3946 XiaoMi10
+P8904 Oppo_R15
+P4955 Vivo_X20
\ No newline at end of file
From 30695118965726d5000c29c3fbd86281382f1ed6 Mon Sep 17 00:00:00 2001
From: jyp
Date: Wed, 14 Jun 2017 00:32:51 +0800
Subject: [PATCH 066/332] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/coderising/ood/srp/PromotionMail.java | 189 ++++++------------
.../ood/srp/config/Configuration.java | 3 +-
.../ood/srp/config/ConfigurationKeys.java | 2 +-
.../ood/srp/config/ConnectionConfig.java | 37 ++++
.../com/coderising/ood/srp/model/Mail.java | 48 +++++
.../com/coderising/ood/srp/model/Product.java | 38 ++++
.../ood/srp/model/Subscriptions.java | 48 +++++
.../ood/srp/service/ProductService.java | 17 ++
.../ood/srp/service/SubscriptionsService.java | 11 +
.../srp/service/impl/ProductServiceImpl.java | 40 ++++
.../impl/SubscriptionsServiceImpl.java | 40 ++++
.../com/coderising/ood/srp/util/DBUtil.java | 2 +-
.../com/coderising/ood/srp/util/MailUtil.java | 2 +-
.../coderising/ood/srp/PromotionMailTest.java | 34 ++++
14 files changed, 375 insertions(+), 136 deletions(-)
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/ConnectionConfig.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Mail.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Product.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Subscriptions.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/ProductService.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/SubscriptionsService.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/impl/ProductServiceImpl.java
create mode 100644 students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/impl/SubscriptionsServiceImpl.java
create mode 100644 students/992331664/ood/ood/src/test/java/com/coderising/ood/srp/PromotionMailTest.java
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/PromotionMail.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/PromotionMail.java
index d98b32e7fc..cd31beac90 100644
--- a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/PromotionMail.java
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/PromotionMail.java
@@ -1,162 +1,89 @@
package com.coderising.ood.srp;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Serializable;
-import java.util.HashMap;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-public class PromotionMail {
-
- protected String sendMailQuery = null;
-
- protected String smtpHost = null;
- protected String altSmtpHost = null;
- protected String fromAddress = null;
- protected String toAddress = null;
- protected String subject = null;
- protected String message = null;
-
- protected String productID = null;
- protected String productDesc = null;
-
- private static Configuration config;
-
- private static final String NAME_KEY = "NAME";
- private static final String EMAIL_KEY = "EMAIL";
-
- public static void main(String[] args) throws Exception {
-
- File f = new File("C:\\coderising\\workspace_ds\\ood-example\\src\\product_promotion.txt");
- boolean emailDebug = false;
-
- PromotionMail pe = new PromotionMail(f, emailDebug);
-
- }
-
- public PromotionMail(File file, boolean mailDebug) throws Exception {
-
- // 读取配置文件, 文件中只有一行用空格隔开, 例如 P8756 iPhone8
- readFile(file);
-
- config = new Configuration();
-
- setSMTPHost();
- setAltSMTPHost();
-
- setFromAddress();
-
- setLoadQuery();
-
- sendEMails(mailDebug, loadMailingList());
-
- }
-
- protected void setProductID(String productID) {
- this.productID = productID;
-
- }
-
- protected String getproductID() {
- return productID;
- }
-
- protected void setLoadQuery() throws Exception {
-
- sendMailQuery = "Select name from subscriptions " + "where product_id= '" + productID + "' "
- + "and send_mail=1 ";
+import com.coderising.ood.srp.config.Configuration;
+import com.coderising.ood.srp.config.ConnectionConfig;
+import com.coderising.ood.srp.model.Mail;
+import com.coderising.ood.srp.model.Product;
+import com.coderising.ood.srp.model.Subscriptions;
+import com.coderising.ood.srp.service.ProductService;
+import com.coderising.ood.srp.service.SubscriptionsService;
+import com.coderising.ood.srp.util.MailUtil;
- System.out.println("loadQuery set");
- }
+public class PromotionMail {
- protected void setSMTPHost() {
- smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
- }
+ protected SubscriptionsService subscriptionsService;
- protected void setAltSMTPHost() {
- altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+ protected ProductService productService;
+ public PromotionMail(SubscriptionsService subscriptionsService, ProductService productService) {
+ this.subscriptionsService = subscriptionsService;
+ this.productService = productService;
}
- protected void setFromAddress() {
- fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
- }
+ /**
+ * 发送促销邮件
+ * @param file 促销产品文件
+ * @param mailDebug
+ * @throws Exception
+ */
+ public void sendPromotionMail(File file, boolean mailDebug) throws Exception {
- protected void setMessage(HashMap userInfo) throws IOException {
+ // 得到促销的产品
+ List products = productService.doFindPromotionalProducts(file);
- String name = (String) userInfo.get(NAME_KEY);
+ // 得到促销产品的订阅信息
+ List subscriptions = subscriptionsService.doFindByProducts(products);
- subject = "您关注的产品降价了";
- message = "尊敬的 " + name + ", 您关注的产品 " + productDesc + " 降价了,欢迎购买!";
+ // 得到订阅人的邮箱和名称,邮箱内容
+ List mails = getMails(subscriptions);
+ // 发送邮箱
+ sendEMails(new ConnectionConfig(new Configuration()), mails, mailDebug);
}
- 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]);
+ protected List getMails(List subscriptions) {
- System.out.println("产品ID = " + productID + "\n");
- System.out.println("产品描述 = " + productDesc + "\n");
+ List mails = new ArrayList();
+ String subject = "您关注的产品降价了";
- } catch (IOException e) {
- throw new IOException(e.getMessage());
- } finally {
- br.close();
+ for (Subscriptions sub : subscriptions) {
+ String productDesc = sub.getProduct().getProductDesc();
+ String message = "尊敬的 " + sub.getName() + ", 您关注的产品 " + productDesc + " 降价了,欢迎购买!";
+ mails.add(new Mail(subject, message, sub.getEmail()));
}
+ return mails;
}
- 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 {
-
+ protected void sendEMails(ConnectionConfig config, List mails, boolean debug) {
+ if (mails == null) {
+ System.out.println("没有邮件需要发送");
+ return;
+ }
System.out.println("开始发送邮件");
-
- if (mailingList != null) {
- Iterator iter = mailingList.iterator();
- while (iter.hasNext()) {
- configureEMail((HashMap) iter.next());
+ Iterator iter = mails.iterator();
+ while (iter.hasNext()) {
+ Mail mail = iter.next();
+ if (mail.getToAddress().length() <= 0) {
+ continue;
+ }
+ try {
+ MailUtil.sendEmail(mail.getToAddress(), config.getFromAddress(), mail.getSubject(), mail.getMessage(),
+ config.getSmtpHost(), debug);
+ } catch (Exception e) {
try {
- if (toAddress.length() > 0)
- MailUtil.sendEmail(toAddress, fromAddress, subject, message, smtpHost, debug);
- } catch (Exception e) {
+ MailUtil.sendEmail(mail.getToAddress(), config.getFromAddress(), mail.getSubject(),
+ mail.getMessage(), config.getAltSmtpHost(), debug);
- try {
- MailUtil.sendEmail(toAddress, fromAddress, subject, message, altSmtpHost, debug);
-
- } catch (Exception e2) {
- System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
- }
+ } catch (Exception e2) {
+ System.out.println("通过备用 SMTP服务器发送邮件失败: " + e2.getMessage());
}
}
-
- }
-
- else {
- System.out.println("没有邮件发送");
-
}
-
+ System.out.println("发送邮件结束");
}
}
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/Configuration.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/Configuration.java
index f328c1816a..bbed122807 100644
--- a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/Configuration.java
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/Configuration.java
@@ -1,4 +1,4 @@
-package com.coderising.ood.srp;
+package com.coderising.ood.srp.config;
import java.util.HashMap;
import java.util.Map;
@@ -16,7 +16,6 @@ public class Configuration {
* @return
*/
public String getProperty(String key) {
-
return configurations.get(key);
}
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/ConfigurationKeys.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/ConfigurationKeys.java
index 8695aed644..7fe226d1bd 100644
--- a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/ConfigurationKeys.java
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/ConfigurationKeys.java
@@ -1,4 +1,4 @@
-package com.coderising.ood.srp;
+package com.coderising.ood.srp.config;
public class ConfigurationKeys {
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/ConnectionConfig.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/ConnectionConfig.java
new file mode 100644
index 0000000000..be33ad6ed2
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/config/ConnectionConfig.java
@@ -0,0 +1,37 @@
+package com.coderising.ood.srp.config;
+
+public class ConnectionConfig {
+ private String smtpHost;
+ private String altSmtpHost;
+ private String fromAddress;
+
+ public ConnectionConfig(Configuration config) {
+ this.smtpHost = config.getProperty(ConfigurationKeys.SMTP_SERVER);
+ this.altSmtpHost = config.getProperty(ConfigurationKeys.ALT_SMTP_SERVER);
+ this.fromAddress = config.getProperty(ConfigurationKeys.EMAIL_ADMIN);
+ }
+
+ 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 String getFromAddress() {
+ return fromAddress;
+ }
+
+ public void setFromAddress(String fromAddress) {
+ this.fromAddress = fromAddress;
+ }
+}
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Mail.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Mail.java
new file mode 100644
index 0000000000..f0b72d7759
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Mail.java
@@ -0,0 +1,48 @@
+package com.coderising.ood.srp.model;
+
+public class Mail {
+ private String subject;
+ private String message;
+ private String toAddress;
+
+ public Mail() {
+ super();
+ }
+
+ public Mail(String subject, String message, String toAddress) {
+ super();
+ this.subject = subject;
+ this.message = message;
+ 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;
+ }
+
+ public String getToAddress() {
+ return toAddress;
+ }
+
+ public void setToAddress(String toAddress) {
+ this.toAddress = toAddress;
+ }
+
+ @Override
+ public String toString() {
+ return "Mail [subject=" + subject + ", message=" + message + ", toAddress=" + toAddress + "]";
+ }
+
+}
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Product.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Product.java
new file mode 100644
index 0000000000..fbcbcf9a89
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Product.java
@@ -0,0 +1,38 @@
+package com.coderising.ood.srp.model;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+public class Product {
+
+ private String productID;
+
+ private String productDesc;
+
+ public Product() {
+ }
+
+ 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/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Subscriptions.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Subscriptions.java
new file mode 100644
index 0000000000..8ac1def689
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/model/Subscriptions.java
@@ -0,0 +1,48 @@
+package com.coderising.ood.srp.model;
+
+public class Subscriptions {
+
+ private String name;
+ private String email;
+ private String productId;
+ private Product product;
+
+ 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;
+ }
+
+ public String getProductId() {
+ return productId;
+ }
+
+ public void setProductId(String productId) {
+ this.productId = productId;
+ }
+
+ public Product getProduct() {
+ return product;
+ }
+
+ public void setProduct(Product product) {
+ this.product = product;
+ }
+
+ @Override
+ public String toString() {
+ return "Subscriptions [name=" + name + ", email=" + email + ", productId=" + productId + ", product=" + product
+ + "]";
+ }
+
+}
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/ProductService.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/ProductService.java
new file mode 100644
index 0000000000..23f5ffb7e3
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/ProductService.java
@@ -0,0 +1,17 @@
+package com.coderising.ood.srp.service;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import com.coderising.ood.srp.model.Product;
+
+public interface ProductService {
+
+ /**
+ * 查询促销产品
+ * @return
+ * @throws IOException
+ */
+ List doFindPromotionalProducts(File file) throws IOException;
+}
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/SubscriptionsService.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/SubscriptionsService.java
new file mode 100644
index 0000000000..5b5cc2830b
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/SubscriptionsService.java
@@ -0,0 +1,11 @@
+package com.coderising.ood.srp.service;
+
+import java.util.List;
+
+import com.coderising.ood.srp.model.Product;
+import com.coderising.ood.srp.model.Subscriptions;
+
+public interface SubscriptionsService {
+
+ List doFindByProducts(List products);
+}
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/impl/ProductServiceImpl.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/impl/ProductServiceImpl.java
new file mode 100644
index 0000000000..66fe9b6d90
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/impl/ProductServiceImpl.java
@@ -0,0 +1,40 @@
+package com.coderising.ood.srp.service.impl;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.coderising.ood.srp.model.Product;
+import com.coderising.ood.srp.service.ProductService;
+
+public class ProductServiceImpl implements ProductService {
+
+ @Override
+ public List doFindPromotionalProducts(File file) throws IOException {
+
+ List products = new ArrayList();
+
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new FileReader(file));
+ while (br.read() != -1) {
+ Product product = new Product();
+ String temp = br.readLine();
+ String[] data = temp.split(" ");
+ product.setProductID(data[0]);
+ product.setProductDesc(data[1]);
+ products.add(product);
+ }
+
+ } catch (IOException e) {
+ throw new IOException(e.getMessage());
+ } finally {
+ br.close();
+ }
+ return products;
+ }
+
+}
diff --git a/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/impl/SubscriptionsServiceImpl.java b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/impl/SubscriptionsServiceImpl.java
new file mode 100644
index 0000000000..164621e2ea
--- /dev/null
+++ b/students/992331664/ood/ood/src/main/java/com/coderising/ood/srp/service/impl/SubscriptionsServiceImpl.java
@@ -0,0 +1,40 @@
+package com.coderising.ood.srp.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.coderising.ood.srp.model.Product;
+import com.coderising.ood.srp.model.Subscriptions;
+import com.coderising.ood.srp.service.SubscriptionsService;
+import com.coderising.ood.srp.util.DBUtil;
+
+public class SubscriptionsServiceImpl implements SubscriptionsService {
+
+ private static final String NAME_KEY = "NAME";
+ private static final String EMAIL_KEY = "EMAIL";
+
+ @SuppressWarnings({ "unused", "rawtypes" })
+ @Override
+ public List