📄 filecatalogloader.java
字号:
import java.util.*;
import java.io.*;
public class FileCatalogLoader implements CatalogLoader{
private final static String COFFEE_PREFIX = "Coffee";
private final static String BREWER_PREFIX = "Brewer";
private final static String PRODUCT_PREFIX = "Product";
private final static String DELIM = "_";
public Catalog loadCatalog(String filename) throws FileNotFoundException,
IOException, DataFormatException{
Catalog catalog = new Catalog();
BufferedReader reader =new BufferedReader(new FileReader(filename));
String line = reader.readLine();
while (line != null) {
Product item = null;
if (line.startsWith(PRODUCT_PREFIX)) {
item = readProduct(line);
}else if (line.startsWith(COFFEE_PREFIX)) {
item = readCoffee(line);
}else if (line.startsWith(BREWER_PREFIX)) {
item = readCoffeeBrewer(line);
}else {
throw new DataFormatException(line);
}
catalog.addProduct(item);
line = reader.readLine();
}
return catalog;
}
private Product readProduct(String line) throws DataFormatException{
StringTokenizer tokenizer = new StringTokenizer(line, DELIM);
if (tokenizer.countTokens() != 4) {
throw new DataFormatException(line);
} else {
try {
String prefix = tokenizer.nextToken();
return new Product(tokenizer.nextToken(),
tokenizer.nextToken(),
Double.parseDouble(tokenizer.nextToken()) );
} catch (NumberFormatException nfe) {
throw new DataFormatException(line);
}
}
}
private Coffee readCoffee(String line)throws DataFormatException{
StringTokenizer tokenizer = new StringTokenizer(line, DELIM);
if (tokenizer.countTokens() != 10) {
throw new DataFormatException(line);
} else {
try {
String prefix = tokenizer.nextToken();
return new Coffee(tokenizer.nextToken(),
tokenizer.nextToken(),
Double.parseDouble(tokenizer.nextToken()),
tokenizer.nextToken(),
tokenizer.nextToken(),
tokenizer.nextToken(),
tokenizer.nextToken(),
tokenizer.nextToken(),
tokenizer.nextToken());
} catch (NumberFormatException nfe) {
throw new DataFormatException(line);
}
}
}
private CoffeeBrewer readCoffeeBrewer(String line) throws DataFormatException{
StringTokenizer tokenizer = new StringTokenizer(line, DELIM);
if (tokenizer.countTokens() != 7) {
throw new DataFormatException(line);
} else {
try {
String prefix = tokenizer.nextToken();
return new CoffeeBrewer(tokenizer.nextToken(),
tokenizer.nextToken(),
Double.parseDouble(tokenizer.nextToken()),
tokenizer.nextToken(),
tokenizer.nextToken(),
Integer.parseInt(tokenizer.nextToken()));
} catch (NumberFormatException nfe) {
throw new DataFormatException(line);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -