?? 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 類為本系統(tǒng)的交互類,所有的交互操作都集中放在此類的start方法中。
* 讀取輸入,解析命令,執(zhí)行命令對應的功能類,供主類直接調(diào)用
* @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;
//用于存儲命令參數(shù)的容器
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;
/**
* 構(gòu)造函數(shù)初始化
*/
public CommandShell(){
pw = new PrintWriter(System.out);
}
/**
* 開始交互。解析系統(tǒng)所有命令。
*
*/
public void start() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
// 讀取輸入,解析命令,執(zhí)行
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{
//當參數(shù)不對時提示命令輸入格式
System.out.println(" 警告-- :");
System.out.println(" 輸入了不存在的命令或者命令格式有誤,使用help命令查看系統(tǒng)各命令格式.");
}
}
//br.close();
}
/**
* 用于退出系統(tǒng)的流
*/
public void quitstream() {
//pw.println(" 已安全退出系統(tǒng)!感謝使用!");
//pw.flush();
pw.close();
//System.exit(0);
}
/**
* 對系統(tǒng)的使用及命令格式提供說明
*/
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 + -