| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.cocoon.components.elementprocessor.impl.poi.hssf.elements; |
| |
| import java.io.ByteArrayInputStream; |
| import java.io.IOException; |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.apache.poi.hssf.usermodel.HSSFCellStyle; |
| import org.apache.poi.hssf.usermodel.HSSFDataFormat; |
| import org.apache.poi.hssf.usermodel.HSSFFont; |
| import org.apache.poi.hssf.usermodel.HSSFSheet; |
| import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
| import org.apache.poi.poifs.filesystem.POIFSFileSystem; |
| |
| /** |
| * internal representation of a Workbook |
| * |
| * @author Marc Johnson (marc_johnson27591@hotmail.com) |
| * @author Andrew C. Oliver (acoliver2@users.sourceforge.net) |
| * @version CVS $Id$ |
| */ |
| |
| // package scope |
| class Workbook { |
| private HSSFWorkbook _workbook; |
| private int _sheet_index; |
| private final static int REPEAT_CAPACITY = 91; |
| private Map _repeat; |
| |
| /** |
| * Constructor Workbook |
| */ |
| Workbook() { |
| _workbook = new HSSFWorkbook(); |
| _sheet_index = 0; |
| _repeat = new HashMap(REPEAT_CAPACITY); |
| } |
| /** |
| * Method createDataFormat |
| * @return newly created DataFormat |
| */ |
| HSSFDataFormat createDataFormat() { |
| return _workbook.createDataFormat(); |
| } |
| |
| /** |
| * check if the format exists |
| * @param format and the value |
| * @return the format index |
| */ |
| Object getValidate(String format, short value) { |
| if (_repeat.containsKey(format) == false) { |
| _repeat.put(format, new Short(value)); |
| } |
| return _repeat.get(format); |
| } |
| |
| /** |
| * Method getNextName |
| * @return next name for a new sheet |
| */ |
| String getNextName() { |
| return "Sheet" + _sheet_index++; |
| } |
| |
| /** |
| * Method createSheet |
| * @param name name of the sheet |
| * @return newly created sheet |
| */ |
| HSSFSheet createSheet(final String name) { |
| return _workbook.createSheet(name); |
| } |
| |
| /** |
| * Method getPhysicalIndex |
| * @param name name of the sheet |
| * @return the sheet's physical index |
| */ |
| int getPhysicalIndex(final String name) { |
| return _workbook.getSheetIndex(name); |
| } |
| |
| /** |
| * Method renameSheet |
| * @param index the sheet's physical index |
| * @param name the new name for the sheet |
| */ |
| void renameSheet(final int index, final String name) { |
| _workbook.setSheetName(index, name); |
| } |
| |
| /** |
| * create a cell style in the underlying HSSF model and return the |
| * reference this should match reasonably close to what is in the |
| * StyleRegion element in the gnumeric ss. |
| */ |
| HSSFCellStyle createStyle() { |
| HSSFCellStyle style = _workbook.createCellStyle(); |
| return style; |
| } |
| |
| /** |
| * create a font in the underlying HSSF model and return the reference |
| */ |
| HSSFFont createFont() { |
| HSSFFont font = _workbook.createFont(); |
| return font; |
| } |
| |
| HSSFWorkbook getWorkbook() { |
| return _workbook; |
| } |
| |
| /** |
| * write self to a filesystem |
| * @param filesystem the filesystem to be written to |
| * @exception IOException |
| */ |
| void write(final POIFSFileSystem filesystem) throws IOException { |
| filesystem.createDocument(new ByteArrayInputStream( |
| _workbook.getBytes()), "Workbook"); |
| } |
| } // end package scope class Workbook |