summaryrefslogtreecommitdiff
path: root/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java
diff options
context:
space:
mode:
Diffstat (limited to 'xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java')
-rw-r--r--xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java540
1 files changed, 0 insertions, 540 deletions
diff --git a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java b/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java
deleted file mode 100644
index 70068253f7cf..000000000000
--- a/xmerge/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/Workbook.java
+++ /dev/null
@@ -1,540 +0,0 @@
-/************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org 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.
- *
- * OpenOffice.org 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 LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package org.openoffice.xmerge.converter.xml.sxc.pexcel.records;
-
-import java.io.OutputStream;
-import java.io.InputStream;
-import java.io.IOException;
-import java.util.Vector;
-import java.util.Enumeration;
-
-import org.openoffice.xmerge.converter.xml.OfficeConstants;
-import org.openoffice.xmerge.converter.xml.sxc.Format;
-import org.openoffice.xmerge.converter.xml.sxc.NameDefinition;
-import org.openoffice.xmerge.converter.xml.sxc.BookSettings;
-import org.openoffice.xmerge.converter.xml.sxc.SheetSettings;
-import org.openoffice.xmerge.util.Debug;
-import org.openoffice.xmerge.util.IntArrayList;
-import org.openoffice.xmerge.converter.xml.sxc.pexcel.PocketExcelConstants;
-import org.openoffice.xmerge.converter.xml.sxc.ColumnRowInfo;
-
-/**
- * This class is used by <code> PxlDocument</code> to maintain pexcel
- * workbooks.
- *
- * @author Martin Maher
- */
-public class Workbook implements org.openoffice.xmerge.Document,
-OfficeConstants {
-
- private Vector fonts = new Vector();
- private Vector extendedFormats = new Vector();
- private Vector worksheets = new Vector();
- private Vector boundsheets = new Vector();
- private Vector definedNames = new Vector();
- private static final CodePage cp;
- private static final Window1 win1;
- private static final BeginningOfFile bof;;
- private static final Eof eof;
- private String fileName;
-
- static {
- cp = new CodePage();
- win1 = new Window1();
- bof = new BeginningOfFile(true);
- eof = new Eof();
- }
-
-
- /**
- * Constructs a pocket Excel Workbook with the name of the file passed in
- * as an argument. Also fills out a basic header block containing the
- * minimum number of objects that can be created at this time.
- *
- * @param name Name of the Pocket Excel Data file. (excluding the file
- * extension)
- */
- public Workbook(String name) throws IOException {
- fileName = name + PocketExcelConstants.FILE_EXTENSION;
- Format defaultFormat = new Format();
- FontDescription fd = new FontDescription(defaultFormat);
- fonts.add(fd);
- ExtendedFormat xf = new ExtendedFormat(0, defaultFormat);
- extendedFormats.add(xf);
- }
-
- /**
- * Constructs a pocket Excel Workbook from the
- * <code>InputStream</code> and assigns it the document name passed in
- *
- * @param is InputStream containing a Pocket Excel Data file.
- */
- public Workbook(String name, InputStream is) throws IOException {
- read(is);
- fileName = name;
- }
-
- /**
- * Writes the current workbook to the <code>Outputstream</code>
- *
- * @param os The destination outputstream
- */
- public void write(OutputStream os) throws IOException {
- bof.write(os);
- cp.write(os);
- for(Enumeration e = definedNames.elements();e.hasMoreElements();) {
- DefinedName dn = (DefinedName) e.nextElement();
- dn.write(os);
- }
- win1.write(os);
- for(Enumeration e = fonts.elements();e.hasMoreElements();) {
- FontDescription fd = (FontDescription) e.nextElement();
- fd.write(os);
- }
- for(Enumeration e = extendedFormats.elements();e.hasMoreElements();) {
- ExtendedFormat xf = (ExtendedFormat) e.nextElement();
- xf.write(os);
- }
- for(Enumeration e = boundsheets.elements();e.hasMoreElements();) {
- BoundSheet bs = (BoundSheet) e.nextElement();
- bs.write(os);
- }
- eof.write(os);
-
- for(Enumeration e = worksheets.elements();e.hasMoreElements();) {
- Worksheet ws = (Worksheet) e.nextElement();
- ws.write(os);
- }
- }
-
- /**
- * Reads a workbook from the <code>InputStream</code> and contructs a
- * workbook object from it
- *
- * @param is InputStream containing a Pocket Excel Data file.
- */
- public void read(InputStream is) throws IOException {
-
- boolean done = false;
-
- int b = 0;
- while (!done)
- {
- b = is.read();
- if (b == -1)
- {
- Debug.log(Debug.TRACE,"End of file reached");
- break;
- }
-
- switch (b)
- {
- case PocketExcelConstants.DEFINED_NAME:
- Debug.log(Debug.TRACE,"NAME: Defined Name (18h)");
- DefinedName dn = new DefinedName(is, this);
- definedNames.add(dn);
- break;
-
- case PocketExcelConstants.BOF_RECORD:
- Debug.log(Debug.TRACE,"BOF Record");
- bof.read(is);
- break;
-
- case PocketExcelConstants.EOF_MARKER:
- Debug.log(Debug.TRACE,"EOF Marker");
- eof.read(is);
- Worksheet ws = new Worksheet(this);
- while(ws.read(is)) {
- worksheets.add(ws);
- ws = new Worksheet(this);
- }
- break;
-
- case PocketExcelConstants.FONT_DESCRIPTION:
- Debug.log(Debug.TRACE,"FONT: Font Description (31h)");
- FontDescription fd = new FontDescription(is);
- fonts.add(fd);
- break;
-
- case PocketExcelConstants.WINDOW_INFO:
- Debug.log(Debug.TRACE,"WINDOW1: Window Information (3Dh) [PXL 2.0]");
- win1.read(is);
- break;
-
- case PocketExcelConstants.CODEPAGE:
- Debug.log(Debug.TRACE,"CODEPAGE : Codepage and unknown fields (42h)");
- cp.read(is);
- break;
-
- case PocketExcelConstants.BOUND_SHEET:
- Debug.log(Debug.TRACE,"BOUNDSHEET: Sheet Information (85h)");
- BoundSheet bs = new BoundSheet(is);
- boundsheets.add(bs);
- break;
-
- case PocketExcelConstants.EXTENDED_FORMAT:
- Debug.log(Debug.TRACE,"XF: Extended Format (E0h) [PXL 2.0]");
- ExtendedFormat xf = new ExtendedFormat(is);
- extendedFormats.add(xf);
- break;
-
- default:
- b = is.read();
- break;
- }
-
- }
- is.close();
- }
-
- /**
- * Adds a font recrod to the workbook
- *
- * @param f the font record to add
- */
- public int addFont(FontDescription f) {
-
- boolean alreadyExists = false;
- int i = 0;
-
- for(Enumeration e = fonts.elements();e.hasMoreElements();) {
- FontDescription fd = (FontDescription) e.nextElement();
- if(fd.compareTo(f)) {
- alreadyExists = true;
- break;
- } else {
- i++;
- }
- }
-
- if(!alreadyExists)
- fonts.add(f);
-
- return i;
- }
-
- /**
- * Adds a ExtendedFormat record to the workbook
- *
- * @param f the font recrod to add
- */
- public int addExtendedFormat(Format fmt) throws IOException {
-
- FontDescription fd = new FontDescription(fmt);
- int ixfnt = addFont(fd);
- ExtendedFormat xf = new ExtendedFormat(ixfnt, fmt);
-
- boolean alreadyExists = false;
- int i = 0;
-
- for(Enumeration e = extendedFormats.elements();e.hasMoreElements();) {
- ExtendedFormat currentXF = (ExtendedFormat) e.nextElement();
- if(xf.compareTo(currentXF)) {
- alreadyExists = true;
- break;
- } else if(!alreadyExists) {
- i++;
- }
- }
-
- if(!alreadyExists)
- extendedFormats.add(xf);
-
- return i;
- }
-
- /**
- * Gets a worksheet at a particular index from mthe current workbook.
- *
- * @param index the index of the worksheet to retrieve
- */
- public Worksheet getWorksheet(int index) {
-
- return ((Worksheet) worksheets.elementAt(index));
- }
-
- /**
- * Returns a FontDescription indictated by the
- * index parameter passed in to the method
- *
- * @param ixfnt index to the FontDescriptions, this is a 0 based index
- * @return FontDescription indexed by ixfe
- */
- public FontDescription getFontDescription(int ixfnt) {
-
- return (FontDescription) fonts.elementAt(ixfnt);
- }
-
- /**
- * Returns a ExtendedFormat indictated by the
- * index parameter passed in to the method
- *
- * @param ixfe index to the FontDescriptions, this is a 0 based index
- * @return FontDescription indexed by ixfe
- */
- public ExtendedFormat getExtendedFormat(int ixfe) {
-
- return (ExtendedFormat) extendedFormats.elementAt(ixfe);
- }
-
- /**
- * Returns an enumeration of DefinedNames for this workbook
- *
- * @return Enumeration for the DefinedNames
- */
- public Enumeration getDefinedNames() {
-
- return definedNames.elements();
- }
-
- /**
- * Returns an enumeration of <code>Settings</code> for this workbook
- *
- * @return Enumeration of <code>Settings</code>
- */
- public BookSettings getSettings() {
-
- Vector settingsVector = new Vector();
- int index = 0;
- for(Enumeration e = worksheets.elements();e.hasMoreElements();) {
- Worksheet ws = (Worksheet) e.nextElement();
- SheetSettings s = ws.getSettings();
- s.setSheetName(getSheetName(index++));
- settingsVector.add(s);
- }
- BookSettings bs = new BookSettings(settingsVector);
- String activeSheetName = getSheetName(win1.getActiveSheet());
- bs.setActiveSheet(activeSheetName);
- return bs;
- }
-
- /**
- * Returns a <code>Vector</code> containing all the worksheet Names
- *
- * @return a <code>Vector</code> containing all the worksheet Names
- */
- public Vector getWorksheetNames() {
-
- Vector wsNames = new Vector();
-
- for(int i = 0;i < boundsheets.size();i++) {
- wsNames.add(getSheetName(i));
- }
-
- return wsNames;
- }
-
- /**
- * Returns the name of the worksheet at the specified index
- *
- * @return a <code>String</code> containing the name of the worksheet
- */
- public String getSheetName(int index) {
- BoundSheet bs = (BoundSheet) boundsheets.elementAt(index);
-
- return bs.getSheetName();
- }
-
- /**
- * Adds a <code>Worksheet</code> to the workbook.
- *
- * @return name the name of the <code>Worksheet</code> to be added
- */
- public void addWorksheet(String name) throws IOException {
-
- BoundSheet bs = new BoundSheet(name);
- boundsheets.add(bs);
-
- Worksheet ws = new Worksheet();
- worksheets.add(ws);
- }
-
- /**
- * Adds a cell to the current worksheet.
- *
- * @return the name of the <code>Worksheet</code> to be added
- */
- public void addCell(int row,int col, Format fmt, String cellContents)
- throws IOException {
-
- Worksheet currentWS = (Worksheet) worksheets.elementAt(worksheets.size()-1);
- int ixfe = addExtendedFormat(fmt);
-
- String category = fmt.getCategory();
-
- // Now the formatting is out of the way add the cell
- Debug.log(Debug.TRACE,"Cell Format: " + fmt);
- Debug.log(Debug.TRACE,"Row : " + row);
- Debug.log(Debug.TRACE,"Col : " + col);
- if(cellContents.startsWith("=")) {
- try {
- Formula f = new Formula(row, col, cellContents, ixfe, fmt, this);
- currentWS.addCell(f);
- if(category.equalsIgnoreCase(CELLTYPE_STRING)) {
- StringValue sv = new StringValue(fmt.getValue());
- currentWS.addCell(sv);
- }
- } catch(Exception e) {
- Debug.log(Debug.TRACE, "Parsing Exception thrown : " + e.getMessage());
- BoolErrCell errorCell = new BoolErrCell(row, col, ixfe, 0x2A, 1);
- currentWS.addCell(errorCell);
- }
- } else if(category.equalsIgnoreCase(OfficeConstants.CELLTYPE_FLOAT)) {
- try {
- FloatNumber num = new FloatNumber(row, col, cellContents, ixfe);
- currentWS.addCell(num);
- } catch(Exception e) {
- Debug.log(Debug.TRACE,"Error could not parse Float " + cellContents);
- LabelCell lc = new LabelCell(row, col, cellContents, ixfe);
- currentWS.addCell(lc);
- }
- } else {
- if(cellContents.length()==0) {
- Debug.log(Debug.TRACE, "Blank Cell");
- BlankCell b = new BlankCell(row, col, ixfe);
- currentWS.addCell(b);
- } else {
- Debug.log(Debug.TRACE, "Label Cell : " + cellContents);
- LabelCell lc = new LabelCell(row, col, cellContents, ixfe);
- currentWS.addCell(lc); // three because we assume the last three
- // Records in any worksheet is the selection,
- // window2 and eof Records
- }
- }
- }
-
- /**
- * Will create a number of ColInfo records based on the column widths
- * based in.
- *
- * @param columnRows <code>Vector</code> of <code>ColumnRowInfo</code>
- */
- public void addColInfo(Vector columnRows) throws IOException {
-
- Worksheet currentWS = (Worksheet) worksheets.elementAt(worksheets.size()-1);
-
- int nCols = 0;
- int nRows = 0;
-
- Debug.log(Debug.TRACE,"Workbook: addColInfo()");
- for(Enumeration e = columnRows.elements();e.hasMoreElements();) {
- ColumnRowInfo cri =(ColumnRowInfo) e.nextElement();
- int ixfe = 0;
- int size = cri.getSize();
- int repeated = cri.getRepeated();
- if(cri.isColumn()) {
- Debug.log(Debug.TRACE,"Workbook: adding ColInfo width = " + size);
- ColInfo newColInfo = new ColInfo( nCols,
- nCols+repeated-1,
- size, ixfe);
- currentWS.addCol(newColInfo);
- nCols += repeated;
- } else if(cri.isRow()) {
-
- Debug.log(Debug.TRACE,"Workbook: adding Row Height = " + size);
- if(!cri.isDefaultSize()) {
- for(int i=0;i<repeated;i++) {
- Row newRow = new Row(nRows++, size, cri.isUserDefined());
- currentWS.addRow(newRow);
- }
- } else {
- // If it is the Default Row we don't need to add it
- nRows += repeated;
- }
-
- }
- }
- }
-
- /**
- * Will create a number of ColInfo recrods based on the column widths
- * based in.
- *
- * @param an integer list representing the column widths
- */
- public void addNameDefinition(NameDefinition nameDefinition) throws IOException {
-
- DefinedName dn = new DefinedName(nameDefinition, this);
- definedNames.add(dn);
- }
-
- /**
- * Adds the <code>BookSettings</code> for this workbook.
- *
- * @param book the <code>BookSettings</code> to add
- */
- public void addSettings(BookSettings book) throws IOException {
-
- int index = 0;
- Vector sheetSettings = book.getSheetSettings();
- String activeSheetName = book.getActiveSheet();
-
- for(Enumeration e = worksheets.elements();e.hasMoreElements();) {
- Worksheet ws = (Worksheet) e.nextElement();
- String name = getSheetName(index++);
- if(activeSheetName.equals(name)) {
- win1.setActiveSheet(index-1);
- }
- for(Enumeration eSettings = sheetSettings.elements();eSettings.hasMoreElements();) {
- SheetSettings s = (SheetSettings) eSettings.nextElement();
- if(name.equals(s.getSheetName())) {
- ws.addSettings(s);
- }
- }
- }
- }
-
- /**
- * Return the filename of the pxl document without the file extension
- *
- * @return filename without the file extension
- */
- public String getName() {
-
- // We have to strip off the file extension
- int end = fileName.lastIndexOf(".");
- String name;
- if( end >= 0) // check in case the filename is already stripped
- name = fileName.substring(0, end);
- else
- name = fileName;
-
- return name;
- }
-
- /**
- * Returns the filename of the pxl document with the file extension
- *
- * @return filename with the file extension
- */
- public String getFileName() {
-
- return fileName;
- }
-
-}