Java tutorial
/************************************************************************* * * Copyright 2009 by bBreak Systems. * * ExCella Trans - Excel??? * * $Id: TransProcessor.java 28 2009-07-02 04:38:39Z yuta-takahashi $ * $Revision: 28 $ * * This file is part of ExCella Trans. * * ExCella Trans is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * ExCella Trans is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License version 3 for more details * (a copy is included in the COPYING.LESSER file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with ExCella Trans. If not, see * <http://www.gnu.org/licenses/lgpl-3.0-standalone.html> * for a copy of the LGPLv3 License. * ************************************************************************/ package org.bbreak.excella.trans.processor; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.bbreak.excella.core.BookController; import org.bbreak.excella.core.BookData; import org.bbreak.excella.core.SheetData; import org.bbreak.excella.core.exception.ExportException; import org.bbreak.excella.core.exception.ParseException; import org.bbreak.excella.core.exporter.book.BookExporter; import org.bbreak.excella.core.exporter.sheet.SheetExporter; import org.bbreak.excella.core.handler.ParseErrorHandler; import org.bbreak.excella.core.listener.SheetParseListener; import org.bbreak.excella.core.tag.TagParser; import org.bbreak.excella.trans.listener.TransProcessListener; /** * * * @since 1.0 */ public class TransProcessor { /** * ? */ public static final String COMMENT_PREFIX = BookController.COMMENT_PREFIX; /** * /** */ private BookController controller = null; /** * */ private Workbook workbook = null; /** * ? */ private List<TransProcessListener> processListeners = new ArrayList<TransProcessListener>(); /** * * * @param filePath Excel * @throws IOException ??????? */ public TransProcessor(String filePath) throws IOException { // ?? init(filePath); } /** * ?? * * @param filePath Excel * @throws IOException ??????? */ private void init(String filePath) throws IOException { // ? this.workbook = getWorkbook(filePath); // ? this.controller = new BookController(workbook); // for (TagParser<?> tagParser : TransCreateHelper.getDefaultTagParsers()) { addTagParser(tagParser); } // ? for (SheetParseListener listener : TransCreateHelper.getDefaultSheetParseListeners()) { addSheetParseListener(listener); } } /** * ????? * * @param filePath Excel * @return workbook * @throws IOException ??????? */ private Workbook getWorkbook(String filePath) throws IOException { Workbook workbook = null; if (filePath.endsWith(BookController.XSSF_SUFFIX)) { // XSSF? workbook = new XSSFWorkbook(filePath); } else { // HSSF? FileInputStream stream = new FileInputStream(filePath); POIFSFileSystem fs = new POIFSFileSystem(stream); workbook = new HSSFWorkbook(fs); stream.close(); } return workbook; } /** * ?? * * @return bookData * @throws ParseException * @throws ExportException ? */ public BookData processBook() throws ParseException, ExportException { return processBook(null); } /** * ?? * * @param data TagParser.parse?????? * @return bookData * @throws ParseException * @throws ExportException ? */ public BookData processBook(Object data) throws ParseException, ExportException { // ??? for (TransProcessListener listener : processListeners) { listener.preBookParse(workbook); } controller.parseBook(data); // ?? for (TransProcessListener listener : processListeners) { listener.postBookParse(workbook, controller.getBookData()); } return controller.getBookData(); } /** * ?? * * @param sheetName ?? * @return sheetData * @throws ParseException * @throws ExportException ? */ public SheetData processSheet(String sheetName) throws ParseException, ExportException { return processSheet(sheetName, null); } /** * ?? * * @param sheetName ?? * @param data TagParser.parse?????? * @return sheetData * @throws ParseException * @throws ExportException ? */ public SheetData processSheet(String sheetName, Object data) throws ParseException, ExportException { SheetData sheetData = null; sheetData = controller.parseSheet(sheetName, data); return sheetData; } /** * ?Sql???????? * * @param tag ? * @return Sql????true??????false */ public Boolean isDefaultSqlTag(String tag) { boolean result = false; List<String> defaultSqlTags = TransCreateHelper.getDefaultSqlTags(); if (defaultSqlTags.contains(tag)) { result = true; } return result; } /** * ???????(?) * * @return ??? */ public List<String> getSheetNames() { return controller.getSheetNames(); } /** * ? * * @param tagParser ? */ public void addTagParser(TagParser<?> tagParser) { this.controller.addTagParser(tagParser); } /** * ??? * * @param sheetName ?? * @param tagParser ? */ public void addTagParser(String sheetName, TagParser<?> tagParser) { this.controller.addTagParser(sheetName, tagParser); } /** * ?? * * @param tag */ public void removeTagParser(String tag) { this.controller.removeTagParser(tag); } /** * ????? */ public void clearTagParsers() { this.controller.clearTagParsers(); } /** * ?? * * @param bookExporter ? */ public void addBookExporter(BookExporter bookExporter) { this.controller.addBookExporter(bookExporter); } /** * ?????? */ public void clearBookExporters() { this.controller.clearBookExporters(); } /** * ?? * * @param sheetExporter ? */ public void addSheetExporter(SheetExporter sheetExporter) { this.controller.addSheetExporter(sheetExporter); } /** * ??? * * @param sheetName ?? * @param sheetExporter ? */ public void addSheetExporter(String sheetName, SheetExporter sheetExporter) { this.controller.addSheetExporter(sheetName, sheetExporter); } /** * ?????? */ public void clearSheetExporters() { this.controller.clearSheetExporters(); } /** * ??? * * @return ? */ public ParseErrorHandler getErrorHandler() { return this.controller.getErrorHandler(); } /** * ?? * * @param errorHandler ? */ public void setErrorHandler(ParseErrorHandler errorHandler) { this.controller.setErrorHandler(errorHandler); } /** * ?? * * @param sheetParseListener ? */ public void addSheetParseListener(SheetParseListener sheetParseListener) { this.controller.addSheetParseListener(sheetParseListener); } /** * ???? * * @param sheetName ?? * @param sheetParseListener ? */ public void addSheetParseListener(String sheetName, SheetParseListener sheetParseListener) { this.controller.addSheetParseListener(sheetName, sheetParseListener); } /** * ?????? */ public void clearSheetParseListeners() { this.controller.clearSheetParseListeners(); } /** * ? * * @param processListener ? */ public void addTransProcessListener(TransProcessListener processListener) { this.processListeners.add(processListener); } /** * ????? */ public void clearTransProcessListeners() { this.processListeners.clear(); } }