Merge remote-tracking branch 'remotes/origin/master' into zgl

zgl
曾国霖 6 years ago
commit a46b03b56b

@ -4,12 +4,16 @@ import core.user.User;
import dao.DBManagement;
import error.GExcptSQL;
import java.util.HashMap;
import java.util.Map;
public class Delete extends Operation {
@Override
public void execute(User subject) throws GExcptSQL {
String id = (String)options.get("id");
String sql = "DELETE FROM graduation_design WHERE id = \'"+
id+"\'";
DBManagement.update(sql);
Map<String, String> map = new HashMap<>();
map.put("id",(String)options.get("id"));
for(String table:DBManagement.graduationDesignTables){
DBManagement.delete(table,map);
}
}
}

@ -4,19 +4,18 @@ import core.user.User;
import dao.DBManagement;
import java.sql.ResultSet;
import java.util.List;
import java.util.Map;
public class Search extends Operation {
@Override
public void execute(User subject) throws Exception {
String table = (String)options.get("table");
String field = (String)options.get("field");
String value = (String)options.get("value");
List<String> fields = (List<String>)options.get("fields");
Map<String, String> limits = (Map<String, String>)options.get("limits");
int start = (int)options.get("start");
int end = (int)options.get("end");
String sql = "SELECT * FROM "+table+
" WHERE "+field+" = \'"+value+"\'"+
" limit "+start+", "+end;
ResultSet rs = DBManagement.query(sql);
ResultSet rs = DBManagement.select(fields,table,limits,start,end);
//todo
}
}

@ -1,6 +1,6 @@
{
"table": "java.lang.String",
"field": "java.lang.String",
"fields": "java.util.List",
"value": "java.lang.String",
"start": "int",
"end": "int",

@ -4,19 +4,24 @@ import core.user.User;
import dao.DBManagement;
import error.GExcptSQL;
import java.util.HashMap;
import java.util.Map;
public class Select extends Operation {
@Override
public void execute(User subject) throws GExcptSQL {
String student_id = (String)options.get("student_id");
Map<String, String> vMap = new HashMap<>();
String id = (String)options.get("student_id");
String teacher_id = (String)options.get("teacher_id");
String id = student_id;
String sql = "INSERT INTO graduation_design VALUES (\'"+
id+"\', "+
student_id+"\', "+
teacher_id+"\', \'m\', \'m\')";
DBManagement.update(sql);
vMap.put("id",id);
vMap.put("student_id",id);
vMap.put("teacher_id",teacher_id);
DBManagement.insert("graduation_design", vMap);
vMap.remove("student_id");
vMap.remove("teacher_id");
for(int i=1;i<DBManagement.graduationDesignTables.length;i++){
DBManagement.insert(DBManagement.graduationDesignTables[i],vMap);
}
}
}

@ -1,7 +0,0 @@
package core.process;
public class AuxiliaryProcess extends Process {
public AuxiliaryProcess(String permission, String operationName, String processOptions, String info) throws Exception {
super(permission, operationName, processOptions, info);
}
}

@ -1,8 +0,0 @@
package core.process;
public class LastProcess extends Process{
public LastProcess(String permission, String operationName, String processOptions, String info) throws Exception {
super(permission, operationName, processOptions, info);
}
}

@ -1,9 +1,6 @@
package core.process;
import core.operation.Operation;
import core.user.User;
import error.GExcptFactory;
import error.GExcptSQL;
public abstract class Process implements Cloneable{
@ -11,48 +8,12 @@ public abstract class Process implements Cloneable{
private Operation operation;
private String buttonName;
private String info;
private String processOptions;
private String UserOptions;
@Override
public Process clone(){
//todo
return null;
}
public Process(String permission, String operationName, String processOptions, String info) throws Exception {
super();
this.setPermission(permission);
this.setOperation(operationName);
this.setInfo(info);
this.setProcessOptions(processOptions);
operation.setProcessOperations(processOptions);
}
public void setUserOperations(String key,Object value){
this.operation.addUserOperations(key,value);
}
public void execute(User subject) throws GExcptSQL {
this.operation.execute(subject);
}
private void setOperation(String operationName) throws GExcptFactory {
try {
this.operation = (Operation) core.utils.GetObjectByName.getOperationByName(operationName);
} catch (Exception e) {
throw new GExcptFactory("create"+operationName+"failure");
}
}
public void setInfo(String info) {
this.info = info;
}
public String getButtonName() {
return buttonName;
}
public void setButtonName(String buttonName) {
this.buttonName = buttonName;
}
public String getInfo() {
return info;
}
public String getPermission() {
return permission;
}
@ -69,12 +30,19 @@ public abstract class Process implements Cloneable{
this.operation = operation;
}
public String getProcessOptions() {
return processOptions;
public String getButtonName() {
return buttonName;
}
public void setButtonName(String buttonName) {
this.buttonName = buttonName;
}
public void setProcessOptions(String processOptions) {
this.processOptions = processOptions;
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
}

@ -1,25 +1,9 @@
package core.process;
import java.io.File;
import java.util.List;
import java.util.Map;
public class ProcessManagement {
private List<TemporaryProcess> temporaryProcesses;
private Map<String, List<Process>> lastProcesses;
private List<AuxiliaryProcess> auxiliaryProcesses;
public void setProcessesByJson(File file){
//todo
}
public Process getTemporaryProcess(int index){
return temporaryProcesses.get(index).clone();
}
public Condition getCondition(String userType, List<Integer> index){
Condition condition = new Condition(this.lastProcesses.get(userType));
for(int i:index){
condition.add(getTemporaryProcess(i));
}
return condition;
return null;
}
}

@ -1,9 +0,0 @@
package core.process;
public class TemporaryProcess extends Process {
public TemporaryProcess(String permission, String operationName, String processOptions, String info) throws Exception {
super(permission, operationName, processOptions, info);
}
}

@ -12,12 +12,9 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import static dao.DBManagement.userTables;
public interface AccountManagement {
static String[] userTables = {
"administrator",
"student",
"teacher"
};
static User login(String id, String password) throws GExcptSQL, GExcptAccount, SQLException {
ResultSet rs = null;
String sql = null;
@ -57,7 +54,7 @@ public interface AccountManagement {
for(String info:necessaryInfo){
sql+=info+"\', \'";
}
sql =sql.substring(0,sql.length()-3)+")";
sql =Utils.cutTail(sql,3)+")";
DBManagement.update(sql);
return createUser(userType, necessaryInfo);
}

@ -1,6 +1,8 @@
package dao;
import java.sql.*;
import java.util.List;
import java.util.Map;
import error.GExcptSQL;
import org.apache.tomcat.jdbc.pool.DataSource;
@ -9,6 +11,24 @@ import org.apache.tomcat.jdbc.pool.PoolProperties;
public class DBManagement {
public static String[] userTables = {
"administrator",
"student",
"teacher"
};
public static String[] graduationDesignTables = {
"graduation_design",
"graduation_design_finished_product",
"graduation_design_finished_product_mentor_score",
"graduation_design_finished_product_reviewer_score",
"graduation_design_information",
"graduation_design_opening_report",
"graduation_design_opening_report_opinion_record",
"graduation_design_reply",
"graduation_design_reply_opinion_record_score"
};
static final String driverClassName="org.mariadb.jdbc.Driver";
static final String url="jdbc:mariadb://localhost:3306/gdms";
static final String username="gdms";
@ -42,6 +62,26 @@ public class DBManagement {
return null;
}
public static void delete(String table, Map<String,String> limits) throws GExcptSQL {
Delete delete = new Delete(table, limits);
String sql = delete.getSQL();
update(sql);
}
public static void insert(String table, Map<String, String> vMap) throws GExcptSQL {
Insert insert = new Insert(table, vMap);
String sql = insert.getSQL();
update(sql);
}
public static ResultSet select(List<String> columns, String table, Map<String,String> limits, int startRow, int endRow) throws Exception {
Select select = new Select(columns,table,limits,startRow,endRow);
String sql = select.getSQL();
return query(sql);
}
public static void update(String table, Map<String,String> vMap, Map<String,String> limits) throws GExcptSQL {
Update update = new Update(table,vMap,limits);
String sql = update.getSQL();
update(sql);
}
public static ResultSet query(String sql) throws Exception {
if(!ifInit) return null;
ResultSet rs = null;

@ -0,0 +1,31 @@
package dao;
import java.util.Map;
public class Delete extends SQLStmt {
private static final String fs = "DELETE ";
private Map<String,String> limits;
Delete(String table, Map<String, String> limits) {
super(table);
this.setLimits(limits);
}
@Override
public String getSQL() {
return this.getFs()+this.getLs();
}
private String getLs(){
return dao.Utils.whereAnd(this.getLimits());
}
public String getFs(){
return fs+this.getTable()+" ";
}
private Map<String, String> getLimits() {
return limits;
}
private void setLimits(Map<String, String> limits) {
this.limits = limits;
}
}

@ -0,0 +1,43 @@
package dao;
import utils.Utils;
import java.util.Map;
public class Insert extends SQLStmt {
private static final String fs ="INSERT INTO ";
private Map<String, String> vMap;
Insert(String table, Map<String, String> vMap){
super(table);
this.setVMap(vMap);
}
@Override
public String getSQL() {
return this.getFs()+this.getVs();
}
@Override
public String getFs() {
return fs+this.getTable()+" ";
}
private String getVs(){
StringBuilder sql = new StringBuilder("(");
for(String key: this.getVMap().keySet()){
sql.append(key).append(", ");
}
sql = new StringBuilder(Utils.cutTail(sql.toString(), 2) + ") ");
sql.append("VALUES (\'");
for(String value: vMap.values()){
sql.append(value).append("\', \'");
}
sql = new StringBuilder(Utils.cutTail(sql.toString(), 3) + ")");
return sql.toString();
}
private Map<String, String> getVMap() {
return vMap;
}
private void setVMap(Map<String, String> vMap) {
this.vMap = vMap;
}
}

@ -0,0 +1,16 @@
package dao;
public abstract class SQLStmt {
private String table;
SQLStmt(String table) {
this.setTable(table);
}
public abstract String getSQL();
public abstract String getFs();
String getTable() {
return table;
}
public void setTable(String table) {
this.table = table;
}
}

@ -0,0 +1,62 @@
package dao;
import java.util.List;
import java.util.Map;
public class Select extends SQLStmt {
private static final String fs ="SELECT ";
private Map<String,String> limits;
private List<String> columns;
private int startRow;
private int endRow;
public Select(List<String> columns, String table, Map<String,String> limits, int startRow, int endRow){
super(table);
this.setColumns(columns);
this.setLimits(limits);
this.setStartRow(startRow);
this.setEndRow(endRow);
}
@Override
public String getSQL() {
return this.getFs()+this.getTs()+this.getLs();
}
private String getLs(){
String sql = dao.Utils.whereAnd(this.getLimits())+" ";
sql+="LIMIT "+this.getStartRow()+", "+this.getEndRow();
return sql;
}
@Override
public String getFs() {
return fs+dao.Utils.linkColumn(this.getColumns())+" ";
}
private String getTs(){
return "FROM "+this.getTable()+" ";
}
private Map<String, String> getLimits() {
return limits;
}
public void setLimits(Map<String, String> limits) {
this.limits = limits;
}
private List<String> getColumns() {
return columns;
}
public void setColumns(List<String> columns) {
this.columns = columns;
}
private int getStartRow() {
return startRow;
}
private void setStartRow(int startRow) {
this.startRow = startRow;
}
private int getEndRow() {
return endRow;
}
private void setEndRow(int endRow) {
this.endRow = endRow;
}
}

@ -0,0 +1,52 @@
package dao;
import java.util.Map;
public class Update extends SQLStmt {
private static final String fs ="UPDATE ";
private Map<String,String> limits;
private Map<String,String> vMap;
Update(String table, Map<String, String> vMap, Map<String, String> limits) {
super(table);
this.setVMap(vMap);
this.setLimits(limits);
}
@Override
public String getSQL() {
return this.getFs()+this.getVs()+this.getLs();
}
@Override
public String getFs() {
return fs+this.getTable()+" ";
}
private String getLs(){
return dao.Utils.whereAnd(this.getLimits());
}
private String getVs(){
String sql = "SET ";
sql+=Utils.linkColumn(Utils.linkKeyValue(this.getVMap()))+" ";
return sql;
}
private Map<String, String> getLimits() {
return limits;
}
public void setLimits(Map<String, String> limits) {
this.limits = limits;
}
public Map<String, String> getVMap() {
return vMap;
}
public void setVMap(Map<String, String> vMap) {
this.vMap = vMap;
}
}

@ -1,6 +1,33 @@
package dao;
public interface Utils {
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public interface Utils {
static String whereAnd(Map<String,String> map){
List<String> list = linkKeyValue(map);
String sql = "WHERE ";
for(String s:list){
sql+=s+" AND ";
}
sql = utils.Utils.cutTail(sql,5)+"";
return sql;
}
//with ", "
static String linkColumn(List<String> list){
String sql = "";
for(String c:list){
sql+=c+", ";
}
return utils.Utils.cutTail(sql,2);
}
//with " = "
static List<String> linkKeyValue(Map<String, String> map){
List<String> list = new ArrayList<>();
for(Map.Entry<String,String> entry:map.entrySet()){
list.add(entry.getKey()+" = \'"+entry.getValue()+"\'");
}
return list;
}
}

@ -5,24 +5,26 @@ import java.util.List;
import java.util.Map;
public interface Utils {
public static Map<String,Integer> userAttrNum =new HashMap<>()
Map<String,Integer> userAttrNum =new HashMap<>()
{
{
userAttrNum.put("administrator",5);
userAttrNum.put("student",7);
userAttrNum.put("teacher",8);
put("administrator",5);
put("student",7);
put("teacher",8);
}
};
public static String toUpperFirstChar(String string) {
static String toUpperFirstChar(String string) {
char[] charArray = string.toCharArray();
charArray[0] -= 32;
return String.valueOf(charArray);
}
public static List<String> formatUserInfo(String userType, List<String> userInfo){
static List<String> formatUserInfo(String userType, List<String> userInfo){
for(int i=0;i<userAttrNum.get(userType)-userInfo.size();i++){
userInfo.add("");
}
return userInfo;
}
static String cutTail(String s,int i){
return s.substring(0,s.length()-i);
}
}

Loading…
Cancel
Save