📄 commandcompile.java
字号:
package agenda.CommandInput;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import agenda.Function.Add;
import agenda.Function.Clear;
import agenda.Function.Delete;
import agenda.Function.Query;
import agenda.Function.Quit;
import agenda.Function.Register;
/**
* CommandShell 类为本系统的交互类,所有的交互操作都集中放在此类的start方法中。
* 读取输入,解析命令,执行命令对应的功能类,供主类直接调用
*
*/
public class CommandCompile {
//
private static final String PREFIX = "\n $ ";
private static final String REGISTER= "register";
private static final String ADD = "add";
private static final String QUERY = "query";
private static final String DELETE = "delete";
private static final String CLEAR = "clear";
private static final String BATCH = "batch";
private static final String QUIT = "quit";
//登记命令在解析中的用户名,密码
public static String username = null;
public static String password = null;
//用于存储命令参数的容器
public static List registerargslist = new ArrayList();
public static List addargslist = new ArrayList();
public static List queryargslist = new ArrayList();
public static List deleteargslist = new ArrayList();
public static List clearargslist = new ArrayList();
public static List batchargslist = new ArrayList();
private PrintWriter pw = null;
public CommandCompile(){ //构造函数初始化
pw = new PrintWriter(System.out);
}
public void start() throws IOException{ //解析系统输入的所有命令。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
// 读取输入,解析命令,执行
for(;;){
pw.print(PREFIX);
pw.flush();
String input = br.readLine();
st = new StringTokenizer(input);
String cmd = st.nextToken();
if(cmd.equalsIgnoreCase(REGISTER)){ // 解析register命令
// get username
while(st.hasMoreTokens()){
registerargslist.add(st.nextToken());
}
Register register = new Register();
register.doRegister(CommandCompile.registerargslist);
registerargslist.clear();
}else if(cmd.equalsIgnoreCase(ADD)){ // 解析add命令
while(st.hasMoreTokens()){
addargslist.add(st.nextToken());
}
Add add = new Add();
Add.doAddAgenda(CommandCompile.addargslist);
addargslist.clear();
}else if(cmd.equalsIgnoreCase(QUERY)){ // 解析QUERY命令
while(st.hasMoreTokens()){
queryargslist.add(st.nextToken());
}
Query query = new Query();
query.doQuery(queryargslist);
queryargslist.clear();
}else if(cmd.equalsIgnoreCase(DELETE)){ // 解析DETELE命令
// DELETE
while(st.hasMoreTokens()){
deleteargslist.add(st.nextToken());
}
Delete delete = new Delete();
Delete.doDelete(deleteargslist);
deleteargslist.clear();
}else if(cmd.equalsIgnoreCase(CLEAR)){ // 解析CLEAR命令
// CLEAR
while(st.hasMoreTokens()){
clearargslist.add(st.nextToken());
}
Clear delete = new Clear();
Clear.doClear(clearargslist);
clearargslist.clear();
}else if(cmd.equalsIgnoreCase(BATCH)){ // 解析BATCH命令
// BATCH
BufferedReader in = new BufferedReader(new FileReader("command.txt"));
for(int i = 0;i < 18;i++){
String inputbatch = in.readLine();
if(inputbatch == null){
break;
}
int j = i+1;
System.out.println(" Command["+j+"]: "+inputbatch);
st = new StringTokenizer(inputbatch);
String cmdbatch = st.nextToken();
//System.out.println("\n");
if(cmdbatch.equalsIgnoreCase(REGISTER)){ // 解析register命令
//get username
while(st.hasMoreTokens()){
registerargslist.add(st.nextToken());
}
Register register = new Register();
register.doRegister(CommandCompile.registerargslist);
registerargslist.clear();
System.out.println("\n");
}else if(cmdbatch.equalsIgnoreCase(ADD)){ // 解析add命令
while(st.hasMoreTokens()){
addargslist.add(st.nextToken());
}
Add add = new Add();
Add.doAddAgenda(CommandCompile.addargslist);
addargslist.clear();
System.out.println("\n");
}else if(cmdbatch.equalsIgnoreCase(QUERY)){ // 解析QUERY命令
while(st.hasMoreTokens()){
queryargslist.add(st.nextToken());
}
Query query = new Query();
query.doQuery(queryargslist);
queryargslist.clear();
System.out.println("\n");
}else if(cmdbatch.equalsIgnoreCase(DELETE)){ // 解析DETELE命令
// DETELE
while(st.hasMoreTokens()){
deleteargslist.add(st.nextToken());
}
Delete delete = new Delete();
Delete.doDelete(deleteargslist);
deleteargslist.clear();
System.out.println("\n");
}else if(cmdbatch.equalsIgnoreCase(CLEAR)){ // 解析CLEAR命令
// CLEAR
while(st.hasMoreTokens()){
clearargslist.add(st.nextToken());
}
Clear delete = new Clear();
Clear.doClear(clearargslist);
clearargslist.clear();
System.out.println("\n");
}else if(cmdbatch.equalsIgnoreCase(QUIT)){ // 解析QUIT命令
Quit quitout = new Quit();
Quit.doQuit();
}
}
in.close();
//--------------------------------------------------------------
}else if(cmd.equalsIgnoreCase(QUIT)){ // 解析QUIT命令
Quit quitout = new Quit();
Quit.doQuit();
}else
{
//当参数不对时提示命令输入格式
System.out.println(" 警告-- :");
System.out.println(" 输入了不存在的命令或者命令格式有误,使用help命令查看系统各命令格式.");
}
}
}
public void quitstream() {
pw.println(" 已安全退出系统!感谢使用!");
pw.close();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -