📄 filecatalogloader.java
字号:
import java.io.*;
import java.io.*;
import java.util.StringTokenizer;
/**
* 实现了CatalogLoader接口 用来读取FlightDB和ClientDB 创建FlightDB和ClientDB实例并返回
* @author 魏亮 王健 王梦雄 吴进
* @see CatalogLoader
* @version 1.0.0.2
* @since 19/1/2008
*
*/
public class FileCatalogLoader
implements CatalogLoader {
/**
* client记录的头部
*/
private static final String CLIENT_PREFIX = "client";
/**
* VIPclient记录的头部
*/
private static final String VIPCLIENT_PREFIX = "VIPclient";
/**
* 分隔符
*/
private static final String DELIM = "_";
/**
* 默认构造
*/
public FileCatalogLoader() {
}
/**
* 该方法从文件读取到FlightDB 并将其返回
* @param s
* @return flightDB - FLIFHTDB实例
* @throws FileNotFoundException
* @throws IOException
* @throws DataFormatException
*/
public FlightDB loadFlightDB(String s)
throws FileNotFoundException, IOException, DataFormatException {
FlightDB flightdb = new FlightDB();
BufferedReader bufferedreader = new BufferedReader(new FileReader(s));
for(String s1 = bufferedreader.readLine(); s1 != null; s1 = bufferedreader.readLine()){
Object obj = null;
obj = readFlightItem(s1);
flightdb.addItem(((FlightItem) (obj)));
}
return flightdb;
}
/**
* 该方法从文件读取到ClientDB 并将其返回
* @param s
* @return
* @throws FileNotFoundException
* @throws IOException
* @throws DataFormatException
*/
public ClientDB loadClientDB(String s)
throws FileNotFoundException, IOException, DataFormatException {
ClientDB clientdb = new ClientDB();
BufferedReader bufferedreader = new BufferedReader(new FileReader(s));
for(String s1 = bufferedreader.readLine(); s1 != null; s1 = bufferedreader.readLine()){
Object obj = null;
if(s1.startsWith(CLIENT_PREFIX)){
obj = readClient(s1);
clientdb.addClientItem(((Client) (obj)));
} else if(s1.startsWith(VIPCLIENT_PREFIX)) {
obj = readVIPClient(s1);
clientdb.addVIPItem((VIPClient)obj);
} else {
throw new DataFormatException(s1);
}
}
return clientdb;
}
/**
* 读取FlightItem一行内容 实实例化一个FlightItem对象并返回
* @param s
* @return FlightItem实例
* @throws DataFormatException
*/
private FlightItem readFlightItem(String s)
throws DataFormatException {
StringTokenizer stringtokenizer;
stringtokenizer = new StringTokenizer(s, DELIM);
if(stringtokenizer.countTokens() != 16) {
throw new DataFormatException(s);
} else {
try {
return new FlightItem(stringtokenizer.nextToken(), stringtokenizer.nextToken(),
stringtokenizer.nextToken(), stringtokenizer.nextToken(), Integer.parseInt(stringtokenizer.nextToken()),
new Cabin(Integer.parseInt(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()),
Integer.parseInt(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()),
Integer.parseInt(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()),
Double.parseDouble(stringtokenizer.nextToken()), Double.parseDouble(stringtokenizer.nextToken()), Double.parseDouble(stringtokenizer.nextToken())));
} catch(NumberFormatException numberformatexception) {
throw new DataFormatException(s);
}
}
}
/**
* 读取Client一行内容 实实例化一个Client对象并返回
* @param s
* @return Client实例
* @throws DataFormatException
*/
private Client readClient(String s)
throws DataFormatException {
StringTokenizer stringtokenizer;
stringtokenizer = new StringTokenizer(s, DELIM);
if(stringtokenizer.countTokens() != 23 && stringtokenizer.countTokens() !=5) {
throw new DataFormatException(s);
} else {
if(stringtokenizer.countTokens() ==23){
try {
String str = stringtokenizer.nextToken();
return new Client(stringtokenizer.nextToken(), stringtokenizer.nextToken(), stringtokenizer.nextToken(),
stringtokenizer.nextToken(), stringtokenizer.nextToken(), Double.parseDouble(stringtokenizer.nextToken()),
new FlightItem(stringtokenizer.nextToken(), stringtokenizer.nextToken(), stringtokenizer.nextToken(), stringtokenizer.nextToken(),
Integer.parseInt(stringtokenizer.nextToken()), new Cabin(Integer.parseInt(stringtokenizer.nextToken()),
Integer.parseInt(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()),
Integer.parseInt(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()),
Integer.parseInt(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()),
Integer.parseInt(stringtokenizer.nextToken()), Double.parseDouble(stringtokenizer.nextToken()),
Double.parseDouble(stringtokenizer.nextToken()), Double.parseDouble(stringtokenizer.nextToken()))));
} catch(NumberFormatException numberformatexception) {
throw new DataFormatException(s);
}
}
else if(stringtokenizer.countTokens()==5){
try {
String str = stringtokenizer.nextToken();
return new Client(stringtokenizer.nextToken(), stringtokenizer.nextToken(), stringtokenizer.nextToken(),
stringtokenizer.nextToken());
} catch(NumberFormatException numberformatexception) {
throw new DataFormatException(s);
}
}
}
return null;
}
/**
* 该方法读取VIPClient一行内容 实实例化一个VIPClient对象并返回
* @param s
* @return VIPClient
* @throws DataFormatException
*/
private VIPClient readVIPClient(String s)
throws DataFormatException {
StringTokenizer stringtokenizer;
stringtokenizer = new StringTokenizer(s, DELIM);
if(stringtokenizer.countTokens() != 24 && stringtokenizer.countTokens() != 5) {
throw new DataFormatException(s);
} else {
if(stringtokenizer.countTokens() == 24){
try {
String str = stringtokenizer.nextToken();
return new VIPClient(stringtokenizer.nextToken(), stringtokenizer.nextToken(), stringtokenizer.nextToken(),
stringtokenizer.nextToken(), stringtokenizer.nextToken(),
Double.parseDouble(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()),
new FlightItem(stringtokenizer.nextToken(), stringtokenizer.nextToken(), stringtokenizer.nextToken(), stringtokenizer.nextToken(),
Integer.parseInt(stringtokenizer.nextToken()), new Cabin(Integer.parseInt(stringtokenizer.nextToken()),
Integer.parseInt(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()),
Integer.parseInt(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()),
Integer.parseInt(stringtokenizer.nextToken()), Integer.parseInt(stringtokenizer.nextToken()),
Integer.parseInt(stringtokenizer.nextToken()), Double.parseDouble(stringtokenizer.nextToken()),
Double.parseDouble(stringtokenizer.nextToken()), Double.parseDouble(stringtokenizer.nextToken()))));
} catch(NumberFormatException numberformatexception) {
throw new DataFormatException(s);
}
}else if(stringtokenizer.countTokens() ==5){
try {
String str = stringtokenizer.nextToken();
return new VIPClient(stringtokenizer.nextToken(), stringtokenizer.nextToken(), stringtokenizer.nextToken(),
stringtokenizer.nextToken());
} catch(NumberFormatException numberformatexception) {
throw new DataFormatException(s);
}
}
}
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -