📄 commandshell.java
字号:
package agenda.commandparse;
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.Quit;
import agenda.Register;
import agenda.Clear;
import agenda.Delete;
import agenda.Add;
import agenda.Query;
/**
* CommandShell 类为本系统的交互类,所有的交互操作都集中放在此类的start方法中。
* 读取输入,解析命令,执行命令对应的功能类,供主类直接调用
* @author Xia Wei
*
*/
public class CommandShell {
//
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";
private static final String HELP = "help";
//登记命令在解析中的用户名,密码
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();
//public static List quitargslist = new ArrayList();
//
private PrintWriter pw = null;
/**
* 构造函数初始化
*/
public CommandShell(){
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
if(!st.hasMoreTokens()){
help();
continue;
}
while(st.hasMoreTokens()){
registerargslist.add(st.nextToken());
}
Register register = new Register();
register.doRegister(CommandShell.registerargslist);
registerargslist.clear();
}else if(cmd.equalsIgnoreCase(ADD)){ // 解析add命令
if(!st.hasMoreTokens()){
help();
continue;
}
while(st.hasMoreTokens()){
addargslist.add(st.nextToken());
}
Add add = new Add();
add.doAddAgenda(CommandShell.addargslist);
addargslist.clear();
}else if(cmd.equalsIgnoreCase(QUERY)){ // 解析QUERY命令
if(!st.hasMoreTokens()){
help();
continue;
}
while(st.hasMoreTokens()){
queryargslist.add(st.nextToken());
}
/*
//测试--打印议程列表中的议程
ManageAgenda ma = new ManageAgenda();
ma.Text();
*/
Query query = new Query();
query.doQuery(queryargslist);
queryargslist.clear();
}else if(cmd.equalsIgnoreCase(DELETE)){ // 解析DETELE命令
// DELETE
if(!st.hasMoreTokens()){
help();
continue;
}
while(st.hasMoreTokens()){
deleteargslist.add(st.nextToken());
}
Delete delete = new Delete();
delete.doDelete(deleteargslist);
deleteargslist.clear();
}else if(cmd.equalsIgnoreCase(CLEAR)){ // 解析CLEAR命令
// CLEAR
if(!st.hasMoreTokens()){
help();
continue;
}
while(st.hasMoreTokens()){
clearargslist.add(st.nextToken());
}
Clear delete = new Clear();
delete.doClear(clearargslist);
clearargslist.clear();
//System.out.println("\n");
}else if(cmd.equalsIgnoreCase(BATCH)){ // 解析BATCH命令
// BATCH
BufferedReader in = new BufferedReader(new FileReader("batch.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
if(!st.hasMoreTokens()){
help();
continue;
}
while(st.hasMoreTokens()){
registerargslist.add(st.nextToken());
}
Register register = new Register();
register.doRegister(CommandShell.registerargslist);
// 测试部分
//ManageUser mu = new ManageUser();
//mu.Text();
registerargslist.clear();
System.out.println("\n");
}else if(cmdbatch.equalsIgnoreCase(ADD)){ // 解析add命令
if(!st.hasMoreTokens()){
help();
continue;
}
while(st.hasMoreTokens()){
addargslist.add(st.nextToken());
}
Add add = new Add();
add.doAddAgenda(CommandShell.addargslist);
addargslist.clear();
System.out.println("\n");
}else if(cmdbatch.equalsIgnoreCase(QUERY)){ // 解析QUERY命令
if(!st.hasMoreTokens()){
help();
continue;
}
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
if(!st.hasMoreTokens()){
help();
continue;
}
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
if(!st.hasMoreTokens()){
help();
continue;
}
while(st.hasMoreTokens()){
clearargslist.add(st.nextToken());
}
Clear delete = new Clear();
delete.doClear(clearargslist);
clearargslist.clear();
System.out.println("\n");
}else if(cmdbatch.equalsIgnoreCase(QUIT)){ // 解析QUIT命令
//quitstream();
Quit quitout = new Quit();
quitout.doQuit();
//break;
}
}
in.close();
//--------------------------------------------------------------
}else if(cmd.equalsIgnoreCase(QUIT)){ // 解析QUIT命令
//quitstream();
//-----------------------------
Quit quitout = new Quit();
quitout.doQuit();
//-----------------------------
//break;
}else if(cmd.equalsIgnoreCase(HELP)){
if(!st.hasMoreTokens()){
help();
continue;
}
String s = st.nextToken();
if(!assertNotNull(s)){
help();
continue;
}
help();
}else{
//当参数不对时提示命令输入格式
System.out.println(" 警告-- :");
System.out.println(" 输入了不存在的命令或者命令格式有误,使用help命令查看系统各命令格式.");
}
}
//br.close();
}
/**
* 用于退出系统的流
*/
public void quitstream() {
//pw.println(" 已安全退出系统!感谢使用!");
//pw.flush();
pw.close();
//System.exit(0);
}
/**
* 对系统的使用及命令格式提供说明
*/
public void help(){
pw.println("Notice,Time parameter format:");
pw.println("Time parameter must be inputed like 200711161530,which means");
pw.println("2007 Nov 16th 15:30.");
pw.println("help -- command format:");
pw.println(" -- register username password");
pw.println(" -- add userName password other startTime endTime title");
pw.println(" -- query username password startTime endTime ");
pw.println(" -- delete username password meetingID ");
pw.println(" -- clear username password");
pw.println(" -- batch");
pw.println(" -- help");
pw.println(" -- quit");
pw.flush();
}
/**
*
* @param obj Object
* @return boolean
*
*/
public boolean assertNotNull(Object obj){
if(obj instanceof String){
String s = (String)obj;
return s!=null && s.trim().length()>0;
}
return obj!=null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -