diff --git a/GDMS.iml b/GDMS.iml
index 9457690..3a5c57b 100644
--- a/GDMS.iml
+++ b/GDMS.iml
@@ -19,15 +19,15 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/core/operation/Delete.java b/src/core/operation/Delete.java
index 2827091..f9e7acd 100644
--- a/src/core/operation/Delete.java
+++ b/src/core/operation/Delete.java
@@ -15,6 +15,6 @@ public class Delete extends Operation {
for(String table:DBManagement.graduationDesignTables){
DBManagement.delete(table,map);
}
- return options;
+ return this.getOptions();
}
}
diff --git a/src/core/operation/DownloadFile.java b/src/core/operation/DownloadFile.java
index f33f474..ddb242d 100644
--- a/src/core/operation/DownloadFile.java
+++ b/src/core/operation/DownloadFile.java
@@ -1,12 +1,27 @@
package core.operation;
import core.user.User;
+import dao.DBManagement;
+import java.io.File;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
public class DownloadFile extends Operation{
@Override
public Map execute(User subject) throws Exception {
+ String table = (String) this.getOptions().get("file_type");
+ Map limits = (Map) this.getOptions().get("limits");
+ String field = core.operation.utils.Utils.getFileField(table);
+ List ls = new ArrayList<>();
+ ls.add(field);
+ ResultSet rs = DBManagement.select(ls,table,limits,0,1);
+ rs.next();
+ String filePath = rs.getString(0);
+ File file = new File(filePath);
+ this.getOptions().put("file",file);
return this.getOptions();
}
}
diff --git a/src/core/operation/DownloadFile.json b/src/core/operation/DownloadFile.json
index ad27ff9..8817266 100644
--- a/src/core/operation/DownloadFile.json
+++ b/src/core/operation/DownloadFile.json
@@ -1,6 +1,9 @@
{
"options":{
-
+ "file_type":"String",
+ "limits":"Map"
},
- "return":{}
+ "return":{
+ "file":"File"
+ }
}
\ No newline at end of file
diff --git a/src/core/operation/Operation.java b/src/core/operation/Operation.java
index 729a987..37f8c1e 100644
--- a/src/core/operation/Operation.java
+++ b/src/core/operation/Operation.java
@@ -1,6 +1,7 @@
package core.operation;
+import core.operation.utils.Utils;
import core.user.User;
import error.GExcptFormat;
import gdms.Mode;
@@ -9,8 +10,8 @@ import java.util.Map;
public abstract class Operation {
- protected Map options;
- protected User subject;
+ private Map options;
+ private User subject;
Operation(){
super();
}
@@ -26,7 +27,7 @@ public abstract class Operation {
return options;
}
public void setOptions(String options) throws GExcptFormat {
- this.options = core.operation.utils.util.string2MapOptions(options);
+ this.options = Utils.string2MapOptions(options);
}
public void addOptions(String key, Object value){
if ( Mode.strict == 1){
diff --git a/src/core/operation/UploadFileOperation.java b/src/core/operation/UploadFileOperation.java
index c3a60dc..527b5ac 100644
--- a/src/core/operation/UploadFileOperation.java
+++ b/src/core/operation/UploadFileOperation.java
@@ -1,13 +1,38 @@
package core.operation;
import core.user.User;
+import dao.DBManagement;
import error.GExcptSQL;
+import java.io.File;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
public class UploadFileOperation extends Operation {
@Override
- public Map execute(User subject) throws GExcptSQL {
+ public Map execute(User subject) throws Exception {
+ File file = (File) this.getOptions().get("file");
+ String table = (String) this.getOptions().get("file_type");
+ Map limits = (Map) this.getOptions().get("limits");
+
+ String field = core.operation.utils.Utils.getFileField(table);
+ String filePath = core.operation.utils.Utils.getFilePathName(table,file.getName());
+ Map vMap = new HashMap<>();
+ vMap.put(field,filePath);
+
+ file.renameTo(new File(filePath));
+ //todo
+
+ List ls = new ArrayList<>();
+ ls.add(field);
+ ResultSet rs = DBManagement.select(ls,table,limits,0,1);
+ rs.next();
+ String lastFilePath = rs.getString(0);
+ new File(lastFilePath).delete();
+ DBManagement.update(table,vMap,limits);
return this.getOptions();
}
}
diff --git a/src/core/operation/UploadFileOperation.json b/src/core/operation/UploadFileOperation.json
index ed59a86..c2a2f65 100644
--- a/src/core/operation/UploadFileOperation.json
+++ b/src/core/operation/UploadFileOperation.json
@@ -1,6 +1,8 @@
{
"options":{
- "file": "File"
+ "file": "File",
+ "file_type": "String",
+ "limits":"Map"
},
"return":{}
}
\ No newline at end of file
diff --git a/src/core/operation/fileType.json b/src/core/operation/fileType.json
new file mode 100644
index 0000000..70b496d
--- /dev/null
+++ b/src/core/operation/fileType.json
@@ -0,0 +1,5 @@
+{
+ "公告文件": "announcement",
+ "开题报告":"graduation_design_reply",
+ "毕业设计定稿":"graduation_design_finished_product"
+}
\ No newline at end of file
diff --git a/src/core/operation/utils/Utils.java b/src/core/operation/utils/Utils.java
new file mode 100644
index 0000000..217e8be
--- /dev/null
+++ b/src/core/operation/utils/Utils.java
@@ -0,0 +1,53 @@
+package core.operation.utils;
+
+import error.GExcptFormat;
+import gdms.Configuration;
+import gdms.Mode;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+public interface Utils {
+ Map fileTableField = new HashMap<>() {
+ {
+ put("announcement","annex_url");
+ put("graduation_design_finished_product","graduation_design_url");
+ put("graduation_design_opening_report","report_url");
+ }};
+ static String stringOptionsFormat(String options){
+ return options.replaceAll(" {2,}", " ") ;
+ }
+ static Map string2MapOptions(String sOptions) throws GExcptFormat {
+ sOptions = stringOptionsFormat(sOptions);
+ Map options = new HashMap<>();
+ String[] sOpts = sOptions.split(" ");
+ for(int i=0;i string2MapOptions(String sOptions) throws GExcptFormat {
- sOptions = stringOptionsFormat(sOptions);
- Map options = new HashMap<>();
- String[] sOpts = sOptions.split(" ");
- for(int i=0;i vMap = new HashMap<>();
- ResultSetMetaData rsm = rs.getMetaData();
- rs.next();
- for(int i=0;i vMap = new HashMap<>();
+ ResultSetMetaData rsm = rs.getMetaData();
+ rs.next();
+ for(int i=0;i vMap) throws GExcptSQL {
+ static User register(String userType, Map vMap) throws Exception {
DBManagement.insert(userType,vMap);
return createUser(userType, vMap);
}
@@ -65,16 +61,8 @@ public interface AccountManagement {
static void destroy(User user){
//todo
}
- static User getUser(String userType){
- try {
- return (User) Class.forName("core.user."+ Utils.toUpperFirstChar(userType)).getDeclaredConstructor().newInstance();
- } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException | ClassNotFoundException e) {
- e.printStackTrace();
- }
- return null;
- }
- static User createUser(String userType, Map vMap) {
- User user = getUser(userType);
+ static User createUser(String userType, Map vMap) throws Exception {
+ User user = GetObjectByName.getUserByName(userType);
user.setAttr(vMap);
return user;
}
diff --git a/src/core/utils/GetObjectByName.java b/src/core/utils/GetObjectByName.java
index dcd68a1..de87637 100644
--- a/src/core/utils/GetObjectByName.java
+++ b/src/core/utils/GetObjectByName.java
@@ -1,12 +1,15 @@
package core.utils;
+import core.operation.Operation;
+import core.user.User;
+
public interface GetObjectByName {
String userClassPath = "core.user";
String operationClassPath = "core.operation";
- static Object getUserByName(String name) throws Exception {
- return Class.forName(userClassPath+"."+name).getDeclaredConstructor().newInstance();
+ static User getUserByName(String name) throws Exception {
+ return (User)Class.forName(userClassPath+"."+name).getDeclaredConstructor().newInstance();
}
- static Object getOperationByName(String name) throws Exception{
- return Class.forName(operationClassPath+"."+name).getDeclaredConstructor().newInstance();
+ static Operation getOperationByName(String name) throws Exception{
+ return (Operation)Class.forName(operationClassPath+"."+name).getDeclaredConstructor().newInstance();
}
}
diff --git a/src/dao/DBManagement.java b/src/dao/DBManagement.java
index dd423cc..71224cb 100644
--- a/src/dao/DBManagement.java
+++ b/src/dao/DBManagement.java
@@ -5,6 +5,7 @@ import java.util.List;
import java.util.Map;
import error.GExcptSQL;
+import gdms.Configuration;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;
@@ -27,12 +28,9 @@ public class DBManagement {
"graduation_design_reply",
"graduation_design_reply_opinion_record_score"
};
+ public static String driverClassName="org.mariadb.jdbc.Driver";
- static final String driverClassName="org.mariadb.jdbc.Driver";
- static final String url="jdbc:mariadb://localhost:3306/gdms";
- static final String username="gdms";
- static final String password="GDMS";
public static DataSource dataSource = new DataSource();
@@ -40,10 +38,10 @@ public class DBManagement {
public static void init(){
PoolProperties poolProperties = new PoolProperties();
- poolProperties.setUrl(url);
- poolProperties.setDriverClassName(driverClassName);
- poolProperties.setUsername(username);
- poolProperties.setPassword(password);
+ poolProperties.setUrl(Configuration.dbUrl);
+ poolProperties.setDriverClassName(DBManagement.driverClassName);
+ poolProperties.setUsername(Configuration.dbUsername);
+ poolProperties.setPassword(Configuration.dbPassword);
dataSource.setPoolProperties(poolProperties);
try {
Class.forName(driverClassName);
@@ -55,7 +53,7 @@ public class DBManagement {
public static Connection getConnection(){
if(!ifInit) return null;
try {
- return DriverManager.getConnection(url,username,password);
+ return DriverManager.getConnection(Configuration.dbUrl,Configuration.dbUsername,Configuration.dbPassword);
} catch (SQLException e) {
e.printStackTrace();
}
diff --git a/src/gdms/Configuration.java b/src/gdms/Configuration.java
new file mode 100644
index 0000000..4128db3
--- /dev/null
+++ b/src/gdms/Configuration.java
@@ -0,0 +1,10 @@
+package gdms;
+
+public interface Configuration {
+ //file
+ String filePath = "/";
+ //database
+ String dbUrl="jdbc:mariadb://localhost:3306/gdms";
+ String dbUsername="gdms";
+ String dbPassword="GDMS";
+}
diff --git a/src/gdms/test.java b/src/gdms/test.java
index aac73b8..177f21b 100644
--- a/src/gdms/test.java
+++ b/src/gdms/test.java
@@ -1,5 +1,6 @@
package gdms;
+import core.operation.utils.Utils;
import dao.Select;
import java.util.ArrayList;
@@ -17,5 +18,6 @@ public class test {
map.put("c","d");
Select sql = new Select(list,"zx",map,1,2);
System.out.println(sql.getSQL());
+ System.out.println(Utils.getFilePathName("a","b"));
}
}
diff --git a/src/servlet/account/login.java b/src/servlet/account/login.java
index ef1e238..08269c3 100644
--- a/src/servlet/account/login.java
+++ b/src/servlet/account/login.java
@@ -28,8 +28,10 @@ public class login extends HttpServlet {
gExcptSQL.printStackTrace();
} catch (GExcptAccount gExcptAccount) {
gExcptAccount.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
}
- request.getSession().setAttribute("User",user);
+ request.getSession().setAttribute("User",user);
request.getRequestDispatcher("/home.jsp").forward(request,response);
}
diff --git a/src/utils/Utils.java b/src/utils/Utils.java
index d439588..09f8310 100644
--- a/src/utils/Utils.java
+++ b/src/utils/Utils.java
@@ -27,4 +27,11 @@ public interface Utils {
static String cutTail(String s,int i){
return s.substring(0,s.length()-i);
}
+ static String getFileType(String fileName){
+ if(fileName.contains(".")){
+ return fileName.substring(fileName.lastIndexOf('.'));
+ }else{
+ return "";
+ }
+ }
}