⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filecatalogloader.java

📁 CMU Java课程设计
💻 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 + -