把处理空行的方式变得更优雅
This commit is contained in:
@ -117,6 +117,7 @@ void BookStoreMain(bool is_server, std::string config_dir) {
|
||||
std::getline(std::cin, cmd);
|
||||
auto ret = std::move(
|
||||
engine.Execute(cmd, session_map[session_token].login_stack));
|
||||
if(ret.empty()) ret.push_back("[empty]");
|
||||
std::cout << session_token << ' ' << operation_token << " "
|
||||
<< ret.size() << std::endl;
|
||||
for (auto &line : ret) std::cout << line << std::endl;
|
||||
|
@ -61,14 +61,12 @@ std::vector<std::string> BookStoreEngineClass::Execute(
|
||||
login_stack.pop();
|
||||
}
|
||||
if (!is_server) BookStore_ZYM::shut_down = true;
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
if (operation_map.find(head) == operation_map.end()) {
|
||||
for (int i = 0; i < cmd.length(); i++)
|
||||
if (cmd[i] != ' ') return std::vector<std::string>({"Invalid"});
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
if (!login_stack.empty())
|
||||
log_data_base.AddOperationRecord(login_stack.top().first, cmd,
|
||||
@ -77,79 +75,51 @@ std::vector<std::string> BookStoreEngineClass::Execute(
|
||||
log_data_base.AddOperationRecord("[nobody]", cmd, user_data_base);
|
||||
switch (operation_map[head]) {
|
||||
case OperationType::__Ksu: {
|
||||
auto ret = std::move(ExecuteSu(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteSu(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Klogout: {
|
||||
auto ret = std::move(ExecuteLogout(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteLogout(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Kuseradd: {
|
||||
auto ret = std::move(ExecuteUserAdd(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteUserAdd(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Kregister: {
|
||||
auto ret = std::move(ExecuteRegister(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteRegister(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Kdelete: {
|
||||
auto ret = std::move(ExecuteDelete(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteDelete(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Kpasswd: {
|
||||
auto ret = std::move(ExecutePasswd(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecutePasswd(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Kselect: {
|
||||
auto ret = std::move(ExecuteSelect(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteSelect(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Kmodify: {
|
||||
auto ret = std::move(ExecuteMOdify(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteMOdify(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Kimport: {
|
||||
auto ret = std::move(ExecuteImport(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteImport(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Kshow: {
|
||||
ss >> head;
|
||||
if (head == "finance") goto dst_showfinance;
|
||||
auto ret = std::move(ExecuteShow(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteShow(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Kshowfinance: {
|
||||
dst_showfinance:;
|
||||
auto ret = std::move(ExecuteShowFinance(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteShowFinance(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Kbuy: {
|
||||
auto ret = std::move(ExecuteBuy(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteBuy(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Kreport: {
|
||||
// return std::vector<std::string>({"Invalid"});
|
||||
auto ret = std::move(ExecuteReport(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteReport(cmd, login_stack);
|
||||
}
|
||||
case OperationType::__Klog: {
|
||||
// return std::vector<std::string>({"Invalid"});
|
||||
auto ret = std::move(ExecuteLog(cmd, login_stack));
|
||||
if (is_server && ret.size() == 0) return std::vector<std::string>({""});
|
||||
return ret;
|
||||
return ExecuteLog(cmd, login_stack);
|
||||
}
|
||||
}
|
||||
throw FatalError("Unknown Command", 5);
|
||||
@ -173,15 +143,13 @@ std::vector<std::string> BookStoreEngineClass::ExecuteSu(
|
||||
// debugPrint("has root previlege");
|
||||
login_stack.push(std::make_pair(user_id, 0));
|
||||
login_count[user_id]++;
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
// debugPrint("Examining", user_id, password);
|
||||
if (user_data_base.PAM(user_id, password)) {
|
||||
login_stack.push(std::make_pair(user_id, 0));
|
||||
login_count[user_id]++;
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
return std::vector<std::string>({"Invalid"});
|
||||
}
|
||||
@ -195,8 +163,7 @@ std::vector<std::string> BookStoreEngineClass::ExecuteLogout(
|
||||
}
|
||||
login_count[login_stack.top().first]--;
|
||||
login_stack.pop();
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
|
||||
std::vector<std::string> BookStoreEngineClass::ExecuteRegister(
|
||||
@ -208,8 +175,7 @@ std::vector<std::string> BookStoreEngineClass::ExecuteRegister(
|
||||
if (user_data_base.GetPrevilege(user_id) != -1)
|
||||
return std::vector<std::string>({"Invalid"});
|
||||
user_data_base.AddUser(user_id, password, user_name, 1);
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
|
||||
std::vector<std::string> BookStoreEngineClass::ExecutePasswd(
|
||||
@ -232,14 +198,12 @@ std::vector<std::string> BookStoreEngineClass::ExecutePasswd(
|
||||
return std::vector<std::string>({"Invalid"});
|
||||
}
|
||||
user_data_base.ChangePassword(user_id, new_password);
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
if (!user_data_base.PAM(user_id, current_password))
|
||||
return std::vector<std::string>({"Invalid"});
|
||||
user_data_base.ChangePassword(user_id, new_password);
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
|
||||
std::vector<std::string> BookStoreEngineClass::ExecuteUserAdd(
|
||||
@ -258,8 +222,7 @@ std::vector<std::string> BookStoreEngineClass::ExecuteUserAdd(
|
||||
if (user_data_base.GetPrevilege(user_id) != -1)
|
||||
return std::vector<std::string>({"Invalid"});
|
||||
user_data_base.AddUser(user_id, password, user_name, privilege);
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
|
||||
std::vector<std::string> BookStoreEngineClass::ExecuteDelete(
|
||||
@ -275,8 +238,7 @@ std::vector<std::string> BookStoreEngineClass::ExecuteDelete(
|
||||
if (user_data_base.GetPrevilege(user_id) == -1)
|
||||
return std::vector<std::string>({"Invalid"});
|
||||
user_data_base.DeleteUser(user_id);
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
|
||||
std::vector<std::string> BookStoreEngineClass::ExecuteShow(
|
||||
@ -362,8 +324,7 @@ std::vector<std::string> BookStoreEngineClass::ExecuteSelect(
|
||||
tmp.second = BI_tmp.bid;
|
||||
// debugPrint("selected bid=", tmp.second);
|
||||
login_stack.push(tmp);
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
|
||||
std::vector<std::string> BookStoreEngineClass::ExecuteMOdify(
|
||||
@ -401,8 +362,7 @@ std::vector<std::string> BookStoreEngineClass::ExecuteMOdify(
|
||||
// debugPrint("successfully checked keyword");
|
||||
book_data_base.ModifyInfo(book_data_base.GetISBN(login_stack.top().second),
|
||||
new_ISBN, name, author, keyword, price, -1);
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
|
||||
std::vector<std::string> BookStoreEngineClass::ExecuteImport(
|
||||
@ -425,8 +385,7 @@ std::vector<std::string> BookStoreEngineClass::ExecuteImport(
|
||||
book_data_base.ModifyInfo(book_data_base.GetISBN(login_stack.top().second),
|
||||
"", "", "", "", -1, tmp.quantity_remain + quantity);
|
||||
log_data_base.AddImport(tmp.bid, quantity, total_cost);
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
|
||||
std::vector<std::string> BookStoreEngineClass::ExecuteShowFinance(
|
||||
@ -491,8 +450,7 @@ std::vector<std::string> BookStoreEngineClass::ExecuteReport(
|
||||
log_data_base.FetchOperationRecord(ret, true);
|
||||
return ret;
|
||||
}
|
||||
return is_server ? std::vector<std::string>({""})
|
||||
: std::vector<std::string>();
|
||||
return std::vector<std::string>();
|
||||
}
|
||||
|
||||
std::string BookStoreEngineClass::QueryUserInfo(const std::string &user_name) {
|
||||
|
Reference in New Issue
Block a user