From e918a0cd0d50a3891a707f03dadee849fc7184f7 Mon Sep 17 00:00:00 2001 From: Josh Micich Date: Tue, 18 Aug 2009 02:41:45 +0000 Subject: [PATCH] Fixed unused imports compiler warnings (and some others) git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@805262 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/hssf/dev/EFHSSF.java | 195 -- .../apache/poi/hssf/model/CommentShape.java | 36 +- .../org/apache/poi/hssf/model/Workbook.java | 121 +- .../apache/poi/hssf/record/CFRuleRecord.java | 67 +- .../poi/hssf/record/ContinueRecord.java | 1 - .../apache/poi/hssf/record/RecordFactory.java | 1 - .../poi/hssf/record/SelectionRecord.java | 5 +- .../org/apache/poi/hssf/record/SubRecord.java | 19 +- .../poi/hssf/record/formula/ArrayPtg.java | 35 +- .../poi/hssf/record/formula/RefPtgBase.java | 3 +- .../record/formula/atp/ParityFunction.java | 1 - .../poi/hssf/record/formula/atp/YearFrac.java | 3 +- .../poi/hssf/usermodel/HSSFChildAnchor.java | 8 +- .../hssf/usermodel/HSSFCreationHelper.java | 52 +- .../poi/hssf/usermodel/HSSFDataFormatter.java | 15 +- .../poi/hssf/usermodel/HSSFTextbox.java | 3 - .../org/apache/poi/poifs/dev/POIFSLister.java | 119 +- .../poi/poifs/property/DirectoryProperty.java | 70 +- .../poi/poifs/property/PropertyTable.java | 49 +- .../poi/poifs/property/RootProperty.java | 20 +- .../apache/poi/poifs/storage/BATBlock.java | 8 +- .../storage/BlockAllocationTableReader.java | 40 +- .../storage/BlockAllocationTableWriter.java | 38 +- .../poi/poifs/storage/BlockListImpl.java | 37 +- .../poifs/storage/HeaderBlockConstants.java | 7 - .../poi/poifs/storage/PropertyBlock.java | 16 +- .../poifs/storage/SmallBlockTableReader.java | 13 +- src/java/org/apache/poi/util/IntList.java | 23 +- src/java/org/apache/poi/util/NullLogger.java | 11 +- src/java/org/apache/poi/util/ShortList.java | 4 - .../java/org/apache/poi/POIXMLDocument.java | 1 - .../apache/poi/xssf/model/StylesTable.java | 196 +- .../xssf/usermodel/XSSFCreationHelper.java | 57 +- .../poi/xssf/usermodel/XSSFWorkbook.java | 21 +- .../extensions/XSSFHeaderFooter.java | 323 +-- .../apache/poi/openxml4j/opc/TestPackage.java | 37 +- .../apache/poi/xssf/io/TestLoadSaveXSSF.java | 12 +- .../poi/xssf/usermodel/TestXSSFBugs.java | 12 +- .../xssf/usermodel/TestXSSFDataFormat.java | 17 +- .../poi/xssf/usermodel/TestXSSFFont.java | 20 +- .../poi/xssf/usermodel/TestXSSFName.java | 7 +- .../poi/xssf/usermodel/TestXSSFPicture.java | 1 - .../xssf/usermodel/TestXSSFPictureData.java | 10 +- .../xssf/usermodel/TestXSSFPrintSetup.java | 8 +- .../usermodel/TestXSSFRichTextString.java | 26 +- .../poi/xssf/usermodel/TestXSSFRow.java | 14 +- .../poi/xssf/usermodel/TestXSSFSheet.java | 51 +- .../poi/xssf/usermodel/TestXSSFWorkbook.java | 257 ++- .../poi/xssf/util/TestCTColComparator.java | 8 +- .../poi/xwpf/usermodel/TestXWPFParagraph.java | 45 +- .../apache/poi/hdf/extractor/StyleSheet.java | 6 +- .../poi/hdf/model/HDFObjectFactory.java | 71 +- .../model/hdftypes/FileInformationBlock.java | 3 - .../poi/hdf/model/hdftypes/StyleSheet.java | 5 +- .../hdftypes/definitions/CHPAbstractType.java | 4 - .../hdftypes/definitions/DOPAbstractType.java | 1 - .../hdftypes/definitions/FIBAbstractType.java | 2 - .../hdftypes/definitions/PAPAbstractType.java | 4 - .../hdftypes/definitions/SEPAbstractType.java | 5 - .../hdftypes/definitions/TAPAbstractType.java | 6 - .../hdftypes/definitions/TCAbstractType.java | 5 - .../apache/poi/hslf/EncryptedSlideShow.java | 7 +- .../src/org/apache/poi/hslf/blip/EMF.java | 1 - .../org/apache/poi/hslf/blip/Metafile.java | 1 - .../src/org/apache/poi/hslf/blip/PICT.java | 12 +- .../src/org/apache/poi/hslf/blip/WMF.java | 1 - .../apache/poi/hslf/dev/SlideShowDumper.java | 2 - .../poi/hslf/dev/SlideShowRecordDumper.java | 1 - .../apache/poi/hslf/dev/TextStyleListing.java | 1 - .../hslf/dev/UserEditAndPersistListing.java | 13 +- .../QuickButCruddyTextExtractor.java | 2 - .../org/apache/poi/hslf/model/Freeform.java | 1 - .../apache/poi/hslf/model/MasterSheet.java | 4 - .../org/apache/poi/hslf/model/Picture.java | 2 - .../apache/poi/hslf/model/Placeholder.java | 1 - .../src/org/apache/poi/hslf/model/Shape.java | 1 - .../src/org/apache/poi/hslf/model/Sheet.java | 1 - .../org/apache/poi/hslf/model/TableCell.java | 1 - .../apache/poi/hslf/model/TextPainter.java | 30 +- .../org/apache/poi/hslf/model/TextRun.java | 1 - .../org/apache/poi/hslf/model/TextShape.java | 24 +- .../poi/hslf/record/AnimationInfoAtom.java | 5 +- .../hslf/record/DocumentEncryptionAtom.java | 5 +- .../apache/poi/hslf/record/ExAviMovie.java | 6 - .../org/apache/poi/hslf/record/ExControl.java | 5 - .../poi/hslf/record/ExHyperlinkAtom.java | 15 +- .../apache/poi/hslf/record/ExMediaAtom.java | 2 - .../poi/hslf/record/FontEntityAtom.java | 1 - .../poi/hslf/record/InteractiveInfoAtom.java | 17 +- .../apache/poi/hslf/record/MainMaster.java | 45 +- .../apache/poi/hslf/record/OEShapeAtom.java | 2 - .../org/apache/poi/hslf/record/PPDrawing.java | 83 +- .../poi/hslf/record/PPDrawingGroup.java | 1 - .../hslf/record/RoundTripHFPlaceholder12.java | 8 +- .../poi/hslf/record/SlideListWithText.java | 62 +- .../poi/hslf/record/SoundCollection.java | 2 - .../org/apache/poi/hslf/record/SoundData.java | 3 - .../apache/poi/hslf/record/TextRulerAtom.java | 3 - .../apache/poi/hslf/usermodel/SlideShow.java | 1773 +++++++++-------- .../poi/hwpf/model/DocumentProperties.java | 12 +- .../poi/hwpf/model/PAPFormattedDiskPage.java | 4 +- .../org/apache/poi/hwpf/model/StyleSheet.java | 5 +- .../apache/poi/hwpf/model/TextPieceTable.java | 454 ++--- .../poi/hwpf/model/types/CHPAbstractType.java | 9 +- .../poi/hwpf/model/types/DOPAbstractType.java | 12 +- .../poi/hwpf/model/types/FIBAbstractType.java | 12 +- .../poi/hwpf/model/types/PAPAbstractType.java | 14 +- .../poi/hwpf/model/types/SEPAbstractType.java | 14 +- .../poi/hwpf/model/types/TAPAbstractType.java | 15 +- .../poi/hwpf/model/types/TCAbstractType.java | 7 +- .../hwpf/sprm/CharacterSprmCompressor.java | 2 - .../hwpf/sprm/CharacterSprmUncompressor.java | 1 - .../hwpf/sprm/ParagraphSprmCompressor.java | 2 +- .../hwpf/sprm/ParagraphSprmUncompressor.java | 1 - .../poi/hwpf/sprm/SectionSprmCompressor.java | 220 -- .../poi/hwpf/sprm/TableSprmCompressor.java | 1 - .../apache/poi/hwpf/usermodel/BorderCode.java | 6 +- .../apache/poi/hwpf/usermodel/HWPFList.java | 5 +- .../hwpf/usermodel/ParagraphProperties.java | 12 +- .../poi/hwpf/usermodel/TableIterator.java | 3 - .../apache/poi/hslf/TestEncryptedFile.java | 53 +- .../apache/poi/hslf/model/TestFreeform.java | 23 +- .../poi/hslf/model/TestImagePainter.java | 26 +- .../org/apache/poi/hslf/model/TestLine.java | 14 +- .../apache/poi/hslf/model/TestMovieShape.java | 12 +- .../apache/poi/hslf/model/TestPicture.java | 21 +- .../poi/hslf/model/TestSlideChangeNotes.java | 18 +- .../poi/hslf/model/TestSlideMaster.java | 18 +- .../org/apache/poi/hslf/model/TestTable.java | 14 +- .../hslf/record/TestAnimationInfoAtom.java | 5 +- .../poi/hslf/record/TestCurrentUserAtom.java | 5 - .../poi/hslf/record/TestExHyperlink.java | 81 +- .../poi/hslf/record/TestExHyperlinkAtom.java | 41 +- .../apache/poi/hslf/record/TestExObjList.java | 28 +- .../poi/hslf/record/TestExObjListAtom.java | 51 +- .../poi/hslf/record/TestExOleObjStg.java | 2 - .../hslf/record/TestInteractiveInfoAtom.java | 61 +- .../org/apache/poi/hslf/record/TestSound.java | 78 +- .../hslf/record/TestStyleTextPropAtom.java | 53 +- .../poi/hslf/record/TestTextRulerAtom.java | 70 +- .../poi/hslf/record/TestTextSpecInfoAtom.java | 20 +- .../record/TestTxInteractiveInfoAtom.java | 36 +- .../hslf/record/TestTxMasterStyleAtom.java | 41 +- .../apache/poi/hslf/usermodel/TestBugs.java | 53 +- .../poi/hslf/usermodel/TestRecordSetup.java | 1 - .../poi/hslf/usermodel/TestSoundData.java | 13 +- .../poi/hwpf/model/TestSavedByTable.java | 10 +- .../poi/hwpf/usermodel/TestPictures.java | 252 ++- .../apache/poi/hwpf/usermodel/TestShapes.java | 14 +- .../apache/poi/ddf/TestEscherOptRecord.java | 83 +- .../poi/hssf/record/TestDrawingRecord.java | 19 +- .../hssf/record/TestTextObjectBaseRecord.java | 8 +- .../aggregates/TestSharedValueManager.java | 67 +- .../record/formula/AbstractPtgTestCase.java | 8 - .../poi/hssf/record/formula/TestArrayPtg.java | 44 +- .../formula/eval/TestCircularReferences.java | 53 +- .../functions/NumericFunctionInvoker.java | 1 - .../poi/hssf/usermodel/TestCloneSheet.java | 44 +- .../TestHSSFConditionalFormatting.java | 27 +- .../poi/hssf/usermodel/TestHSSFDateUtil.java | 3 +- .../poi/hssf/usermodel/TestHSSFFont.java | 23 +- .../poi/hssf/usermodel/TestHSSFOptimiser.java | 137 +- .../poi/hssf/usermodel/TestHSSFPicture.java | 35 +- .../poi/hssf/usermodel/TestHSSFRow.java | 6 +- .../poi/hssf/usermodel/TestHSSFWorkbook.java | 3 +- .../hssf/usermodel/TestPOIFSProperties.java | 2 - .../poi/hssf/usermodel/TestWorkbook.java | 5 +- .../poifs/filesystem/TestPropertySorter.java | 22 +- .../poifs/storage/LocalRawDataBlockList.java | 43 +- .../poi/poifs/storage/TestBlockListImpl.java | 17 +- 170 files changed, 2981 insertions(+), 3994 deletions(-) delete mode 100644 src/java/org/apache/poi/hssf/dev/EFHSSF.java diff --git a/src/java/org/apache/poi/hssf/dev/EFHSSF.java b/src/java/org/apache/poi/hssf/dev/EFHSSF.java deleted file mode 100644 index 0c3ab00efa..0000000000 --- a/src/java/org/apache/poi/hssf/dev/EFHSSF.java +++ /dev/null @@ -1,195 +0,0 @@ -/* ==================================================================== - 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.poi.hssf.dev; - -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.IOException; - -import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.apache.poi.hssf.record.*; -import org.apache.poi.hssf.eventmodel.*; -import org.apache.poi.hssf.eventusermodel.*; -import org.apache.poi.hssf.usermodel.*; - -import org.apache.poi.hssf.eventusermodel.HSSFRequest; -import org.apache.poi.hssf.eventusermodel.HSSFListener; -import org.apache.poi.hssf.eventusermodel.HSSFEventFactory; - -/** - * Event Factory version of HSSF test class. - * @author andy - */ -//JMH -//public class EFHSSF -//{ -// String infile; -// String outfile; -// HSSFWorkbook workbook = null; -// HSSFSheet cursheet = null; -// -// /** Creates a new instance of EFHSSF */ -// -// public EFHSSF() -// { -// } -// -// public void setInputFile(String infile) -// { -// this.infile = infile; -// } -// -// public void setOutputFile(String outfile) -// { -// this.outfile = outfile; -// } -// -// public void run() -// throws IOException -// { -// FileInputStream fin = new FileInputStream(infile); -// POIFSFileSystem poifs = new POIFSFileSystem(fin); -// InputStream din = poifs.createDocumentInputStream("Workbook"); -// HSSFRequest req = new HSSFRequest(); -// -// req.addListenerForAllRecords(new EFHSSFListener(this)); -// HSSFEventFactory factory = new HSSFEventFactory(); -// -// factory.processEvents(req, din); -// fin.close(); -// din.close(); -// FileOutputStream fout = new FileOutputStream(outfile); -// -// workbook.write(fout); -// fout.close(); -// System.out.println("done."); -// } -// -// public void recordHandler(Record record) -// { -// HSSFRow row = null; -// HSSFCell cell = null; -// int sheetnum = -1; -// -// switch (record.getSid()) -// { -// -// case BOFRecord.sid : -// BOFRecord bof = ( BOFRecord ) record; -// -// if (bof.getType() == bof.TYPE_WORKBOOK) -// { -// workbook = new HSSFWorkbook(); -// } -// else if (bof.getType() == bof.TYPE_WORKSHEET) -// { -// sheetnum++; -// cursheet = workbook.getSheetAt(sheetnum); -// } -// break; -// -// case BoundSheetRecord.sid : -// BoundSheetRecord bsr = ( BoundSheetRecord ) record; -// -// workbook.createSheet(bsr.getSheetname()); -// break; -// -// case RowRecord.sid : -// RowRecord rowrec = ( RowRecord ) record; -// -// cursheet.createRow(rowrec.getRowNumber()); -// break; -// -// case NumberRecord.sid : -// NumberRecord numrec = ( NumberRecord ) record; -// -// row = cursheet.getRow(numrec.getRow()); -// cell = row.createCell(numrec.getColumn(), -// HSSFCell.CELL_TYPE_NUMERIC); -// cell.setCellValue(numrec.getValue()); -// break; -// -// case SSTRecord.sid : -// SSTRecord sstrec = ( SSTRecord ) record; -// -// for (int k = 0; k < sstrec.getNumUniqueStrings(); k++) -// { -// workbook.addSSTString(new UnicodeString(sstrec.getString(k))); -// } -// break; -// -// case LabelSSTRecord.sid : -// LabelSSTRecord lrec = ( LabelSSTRecord ) record; -// -// row = cursheet.getRow(lrec.getRow()); -// cell = row.createCell(lrec.getColumn(), -// HSSFCell.CELL_TYPE_STRING); -// cell.setCellValue(workbook.getSSTString(lrec.getSSTIndex())); -// break; -// } -// } -// -// public static void main(String [] args) -// { -// if ((args.length < 2) || !args[ 0 ].equals("--help")) -// { -// try -// { -// EFHSSF viewer = new EFHSSF(); -// -// viewer.setInputFile(args[ 0 ]); -// viewer.setOutputFile(args[ 1 ]); -// viewer.run(); -// } -// catch (IOException e) -// { -// e.printStackTrace(); -// } -// } -// else -// { -// System.out.println("EFHSSF"); -// System.out.println( -// "General testbed for HSSFEventFactory based testing and " -// + "Code examples"); -// System.out.println("Usage: java org.apache.poi.hssf.dev.EFHSSF " -// + "file1 file2"); -// System.out.println( -// " --will rewrite the file reading with the event api"); -// System.out.println("and writing with the standard API"); -// } -// } -//} -// -//class EFHSSFListener -// implements HSSFListener -//{ -// EFHSSF efhssf; -// -// public EFHSSFListener(EFHSSF efhssf) -// { -// this.efhssf = efhssf; -// } -// -// public void processRecord(Record record) -// { -// efhssf.recordHandler(record); -// } -//} diff --git a/src/java/org/apache/poi/hssf/model/CommentShape.java b/src/java/org/apache/poi/hssf/model/CommentShape.java index 49f52e0e83..23242d56d8 100644 --- a/src/java/org/apache/poi/hssf/model/CommentShape.java +++ b/src/java/org/apache/poi/hssf/model/CommentShape.java @@ -14,16 +14,23 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ + package org.apache.poi.hssf.model; -import org.apache.poi.hssf.record.*; +import java.util.Iterator; +import java.util.List; + +import org.apache.poi.ddf.EscherOptRecord; +import org.apache.poi.ddf.EscherProperties; +import org.apache.poi.ddf.EscherProperty; +import org.apache.poi.ddf.EscherSimpleProperty; +import org.apache.poi.hssf.record.CommonObjectDataSubRecord; +import org.apache.poi.hssf.record.NoteRecord; +import org.apache.poi.hssf.record.NoteStructureSubRecord; +import org.apache.poi.hssf.record.ObjRecord; +import org.apache.poi.hssf.record.SubRecord; import org.apache.poi.hssf.usermodel.HSSFComment; import org.apache.poi.hssf.usermodel.HSSFShape; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.ddf.*; - -import java.util.List; -import java.util.Iterator; /** * Represents a cell comment. @@ -32,9 +39,9 @@ import java.util.Iterator; * * @author Yegor Kozlov */ -public class CommentShape extends TextboxShape { +public final class CommentShape extends TextboxShape { - private NoteRecord note; + private NoteRecord _note; /** * Creates the low-level records for a comment. @@ -46,10 +53,10 @@ public class CommentShape extends TextboxShape { { super(hssfShape, shapeId); - note = createNoteRecord(hssfShape, shapeId); + _note = createNoteRecord(hssfShape, shapeId); ObjRecord obj = getObjRecord(); - List records = obj.getSubRecords(); + List records = obj.getSubRecords(); int cmoIdx = 0; for (int i = 0; i < records.size(); i++) { Object r = records.get(i); @@ -96,9 +103,9 @@ public class CommentShape extends TextboxShape { super.addStandardOptions(shape, opt); //remove unnecessary properties inherited from TextboxShape - java.util.List props = opt.getEscherProperties(); - for ( Iterator iterator = props.iterator(); iterator.hasNext(); ) { - EscherProperty prop = (EscherProperty) iterator.next(); + List props = opt.getEscherProperties(); + for (Iterator iterator = props.iterator(); iterator.hasNext(); ) { + EscherProperty prop = iterator.next(); switch (prop.getId()){ case EscherProperties.TEXT__TEXTLEFT: case EscherProperties.TEXT__TEXTRIGHT: @@ -127,7 +134,6 @@ public class CommentShape extends TextboxShape { */ public NoteRecord getNoteRecord() { - return note; + return _note; } - } diff --git a/src/java/org/apache/poi/hssf/model/Workbook.java b/src/java/org/apache/poi/hssf/model/Workbook.java index 4378779cc4..91cbaf4c6a 100644 --- a/src/java/org/apache/poi/hssf/model/Workbook.java +++ b/src/java/org/apache/poi/hssf/model/Workbook.java @@ -72,7 +72,6 @@ import org.apache.poi.hssf.record.StyleRecord; import org.apache.poi.hssf.record.SupBookRecord; import org.apache.poi.hssf.record.TabIdRecord; import org.apache.poi.hssf.record.UnicodeString; -import org.apache.poi.hssf.record.UnknownRecord; import org.apache.poi.hssf.record.UseSelFSRecord; import org.apache.poi.hssf.record.WindowOneRecord; import org.apache.poi.hssf.record.WindowProtectRecord; @@ -271,19 +270,19 @@ public final class Workbook implements Model { case WindowOneRecord.sid: if (log.check( POILogger.DEBUG )) log.log(DEBUG, "found WindowOneRecord at " + k); - retval.windowOne = (WindowOneRecord) rec; + retval.windowOne = (WindowOneRecord) rec; break; - case WriteAccessRecord.sid: + case WriteAccessRecord.sid: if (log.check( POILogger.DEBUG )) log.log(DEBUG, "found WriteAccess at " + k); retval.writeAccess = (WriteAccessRecord) rec; break; - case WriteProtectRecord.sid: + case WriteProtectRecord.sid: if (log.check( POILogger.DEBUG )) log.log(DEBUG, "found WriteProtect at " + k); retval.writeProtect = (WriteProtectRecord) rec; break; - case FileSharingRecord.sid: + case FileSharingRecord.sid: if (log.check( POILogger.DEBUG )) log.log(DEBUG, "found FileSharing at " + k); retval.fileShare = (FileSharingRecord) rec; @@ -296,7 +295,7 @@ public final class Workbook implements Model { // retval.records.supbookpos = retval.records.bspos + 1; // retval.records.namepos = retval.records.supbookpos + 1; // } - + // Look for other interesting values that // follow the EOFRecord for ( ; k < recs.size(); k++) { @@ -307,7 +306,7 @@ public final class Workbook implements Model { break; } } - + if (retval.windowOne == null) { retval.windowOne = createWindowOne(); } @@ -388,7 +387,7 @@ public final class Workbook implements Model { retval.records.setBspos(records.size() - 1); } records.add( retval.createCountry() ); - for ( int k = 0; k < nBoundSheets; k++ ) { + for ( int k = 0; k < nBoundSheets; k++ ) { retval.getOrCreateLinkTable().checkExternSheet(k); } retval.sst = new SSTRecord(); @@ -452,7 +451,7 @@ public final class Workbook implements Model { return retval; } - + /** * Retrieves the index of the given font */ @@ -468,7 +467,7 @@ public final class Workbook implements Model { return i; } } - throw new IllegalArgumentException("Could not find that font!"); + throw new IllegalArgumentException("Could not find that font!"); } /** @@ -487,10 +486,10 @@ public final class Workbook implements Model { numfonts++; return rec; } - + /** * Removes the given font record from the - * file's list. This will make all + * file's list. This will make all * subsequent font indicies drop by one, * so you'll need to update those yourself! */ @@ -553,7 +552,7 @@ public final class Workbook implements Model { } /** - * Determines whether a workbook contains the provided sheet name. For the purpose of + * Determines whether a workbook contains the provided sheet name. For the purpose of * comparison, long names are truncated to 31 chars. * * @param name the name to test (case insensitive match) @@ -580,18 +579,18 @@ public final class Workbook implements Model { } return false; } - + /** * sets the order of appearance for a given sheet. * * @param sheetname the name of the sheet to reorder * @param pos the position that we want to insert the sheet into (0 based) */ - + public void setSheetOrder(String sheetname, int pos ) { int sheetNumber = getSheetIndex(sheetname); //remove the sheet that needs to be reordered and place it in the spot we want - boundsheets.add(pos, boundsheets.remove(sheetNumber)); + boundsheets.add(pos, boundsheets.remove(sheetNumber)); } /** @@ -606,7 +605,7 @@ public final class Workbook implements Model { /** * Gets the hidden flag for a given sheet. - * Note that a sheet could instead be + * Note that a sheet could instead be * set to be very hidden, which is different * ({@link #isSheetVeryHidden(int)}) * @@ -619,8 +618,8 @@ public final class Workbook implements Model { /** * Gets the very hidden flag for a given sheet. - * This is different from the normal - * hidden flag + * This is different from the normal + * hidden flag * ({@link #isSheetHidden(int)}) * * @param sheetnum the sheet number (0 based) @@ -632,20 +631,20 @@ public final class Workbook implements Model { /** * Hide or unhide a sheet - * + * * @param sheetnum The sheet number * @param hidden True to mark the sheet as hidden, false otherwise */ public void setSheetHidden(int sheetnum, boolean hidden) { getBoundSheetRec(sheetnum).setHidden(hidden); } - + /** * Hide or unhide a sheet. * 0 = not hidden * 1 = hidden * 2 = very hidden. - * + * * @param sheetnum The sheet number * @param hidden 0 for not hidden, 1 for hidden, 2 for very hidden */ @@ -664,8 +663,8 @@ public final class Workbook implements Model { bsr.setHidden(h); bsr.setVeryHidden(vh); } - - + + /** * get the sheet's index * @param name sheet name @@ -713,18 +712,18 @@ public final class Workbook implements Model { boundsheets.remove(sheetIndex); fixTabIdRecord(); } - + // Within NameRecords, it's ok to have the formula // part point at deleted sheets. It's also ok to // have the ExternSheetNumber point at deleted - // sheets. + // sheets. // However, the sheet index must be adjusted, or // excel will break. (Sheet index is either 0 for // global, or 1 based index to sheet) int sheetNum1Based = sheetIndex + 1; for(int i=0; i Short.MAX_VALUE) { throw new IllegalArgumentException("Sheet number ["+sheetNumber+"]is not valid "); } - + NameRecord name = new NameRecord(builtInName, sheetNumber); - + while(linkTable.nameAlreadyExists(name)) { - throw new RuntimeException("Builtin (" + builtInName + throw new RuntimeException("Builtin (" + builtInName + ") already exists for sheet (" + sheetNumber + ")"); } addName(name); @@ -1853,7 +1852,7 @@ public final class Workbook implements Model { * @param nameIndex name index */ public void removeName(int nameIndex){ - + if (linkTable.getNumNames() > nameIndex) { int idx = findFirstRecordLocBySid(NameRecord.sid); records.remove(idx + nameIndex); @@ -1912,7 +1911,7 @@ public final class Workbook implements Model { return maxformatid; } - + /** * Returns the first occurance of a record matching a particular sid. @@ -1920,7 +1919,7 @@ public final class Workbook implements Model { public Record findFirstRecordBySid(short sid) { for (Iterator iterator = records.iterator(); iterator.hasNext(); ) { Record record = ( Record ) iterator.next(); - + if (record.getSid() == sid) { return record; } @@ -1966,7 +1965,7 @@ public final class Workbook implements Model { { return hyperlinks; } - + public List getRecords() { return records.getRecords(); } @@ -1980,7 +1979,7 @@ public final class Workbook implements Model { public boolean isUsing1904DateWindowing() { return uses1904datewindowing; } - + /** * Returns the custom palette in use for this workbook; if a custom palette record * does not exist, then it is created. @@ -2004,7 +2003,7 @@ public final class Workbook implements Model { } return palette; } - + /** * Finds the primary drawing group, if one already exists */ @@ -2060,7 +2059,7 @@ public final class Workbook implements Model { } /** - * Creates a primary drawing group record. If it already + * Creates a primary drawing group record. If it already * exists then it's modified. */ public void createDrawingGroup() { @@ -2124,7 +2123,7 @@ public final class Workbook implements Model { } } - + public WindowOneRecord getWindowOne() { return windowOne; } @@ -2172,8 +2171,8 @@ public final class Workbook implements Model { if (writeProtect == null) { writeProtect = new WriteProtectRecord(); int i = 0; - for (i = 0; - i < records.size() && !(records.get(i) instanceof BOFRecord); + for (i = 0; + i < records.size() && !(records.get(i) instanceof BOFRecord); i++) { } records.add(i+1, writeProtect); @@ -2185,8 +2184,8 @@ public final class Workbook implements Model { if (writeAccess == null) { writeAccess = createWriteAccess(); int i = 0; - for (i = 0; - i < records.size() && !(records.get(i) instanceof InterfaceEndRecord); + for (i = 0; + i < records.size() && !(records.get(i) instanceof InterfaceEndRecord); i++) { } records.add(i+1, writeAccess); @@ -2198,15 +2197,15 @@ public final class Workbook implements Model { if (fileShare == null) { fileShare = new FileSharingRecord(); int i = 0; - for (i = 0; - i < records.size() && !(records.get(i) instanceof WriteAccessRecord); + for (i = 0; + i < records.size() && !(records.get(i) instanceof WriteAccessRecord); i++) { } records.add(i+1, fileShare); } return fileShare; } - + /** * is the workbook protected with a password (not encrypted)? */ diff --git a/src/java/org/apache/poi/hssf/record/CFRuleRecord.java b/src/java/org/apache/poi/hssf/record/CFRuleRecord.java index 040b45c297..8bf669d81a 100644 --- a/src/java/org/apache/poi/hssf/record/CFRuleRecord.java +++ b/src/java/org/apache/poi/hssf/record/CFRuleRecord.java @@ -22,7 +22,6 @@ import org.apache.poi.hssf.record.cf.BorderFormatting; import org.apache.poi.hssf.record.cf.FontFormatting; import org.apache.poi.hssf.record.cf.PatternFormatting; import org.apache.poi.hssf.record.formula.Ptg; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.ss.formula.Formula; import org.apache.poi.ss.formula.FormulaType; @@ -32,7 +31,7 @@ import org.apache.poi.util.LittleEndianOutput; /** * Conditional Formatting Rule Record (0x01B1).
- * + * * @author Dmitriy Kumshayev */ public final class CFRuleRecord extends StandardRecord { @@ -101,10 +100,10 @@ public final class CFRuleRecord extends StandardRecord { private BorderFormatting borderFormatting; private PatternFormatting patternFormatting; - + private Formula field_17_formula1; private Formula field_18_formula2; - + /** Creates new CFRuleRecord */ private CFRuleRecord(byte conditionType, byte comparisonOperation) { @@ -124,9 +123,9 @@ public final class CFRuleRecord extends StandardRecord { field_17_formula1=Formula.create(Ptg.EMPTY_PTG_ARRAY); field_18_formula2=Formula.create(Ptg.EMPTY_PTG_ARRAY); } - + private CFRuleRecord(byte conditionType, byte comparisonOperation, Ptg[] formula1, Ptg[] formula2) { - this(conditionType, comparisonOperation); + this(conditionType, comparisonOperation); field_17_formula1 = Formula.create(formula1); field_18_formula2 = Formula.create(formula2); } @@ -199,7 +198,7 @@ public final class CFRuleRecord extends StandardRecord { return null; } } - + public boolean containsAlignFormattingBlock() { return getOptionFlag(align); @@ -208,7 +207,7 @@ public final class CFRuleRecord extends StandardRecord { { setOptionFlag(false,align); } - + public boolean containsBorderFormattingBlock() { return getOptionFlag(bord); @@ -229,7 +228,7 @@ public final class CFRuleRecord extends StandardRecord { return null; } } - + public boolean containsPatternFormattingBlock() { return getOptionFlag(patt); @@ -250,7 +249,7 @@ public final class CFRuleRecord extends StandardRecord { return null; } } - + public boolean containsProtectionFormattingBlock() { return getOptionFlag(prot); @@ -259,7 +258,7 @@ public final class CFRuleRecord extends StandardRecord { { setOptionFlag(false,prot); } - + public void setComparisonOperation(byte operation) { field_2_comparison_operator = operation; @@ -269,7 +268,7 @@ public final class CFRuleRecord extends StandardRecord { { return field_2_comparison_operator; } - + /** * get the option flags @@ -279,7 +278,7 @@ public final class CFRuleRecord extends StandardRecord { public int getOptions() { return field_5_options; - } + } private boolean isModified(BitField field) { @@ -290,7 +289,7 @@ public final class CFRuleRecord extends StandardRecord { { field_5_options = field.setBoolean(field_5_options, !modified); } - + public boolean isLeftBorderModified() { return isModified(bordLeft); @@ -300,7 +299,7 @@ public final class CFRuleRecord extends StandardRecord { { setModified(modified,bordLeft); } - + public boolean isRightBorderModified() { return isModified(bordRight); @@ -310,7 +309,7 @@ public final class CFRuleRecord extends StandardRecord { { setModified(modified,bordRight); } - + public boolean isTopBorderModified() { return isModified(bordTop); @@ -320,7 +319,7 @@ public final class CFRuleRecord extends StandardRecord { { setModified(modified,bordTop); } - + public boolean isBottomBorderModified() { return isModified(bordBot); @@ -330,7 +329,7 @@ public final class CFRuleRecord extends StandardRecord { { setModified(modified,bordBot); } - + public boolean isTopLeftBottomRightBorderModified() { return isModified(bordTlBr); @@ -340,7 +339,7 @@ public final class CFRuleRecord extends StandardRecord { { setModified(modified,bordTlBr); } - + public boolean isBottomLeftTopRightBorderModified() { return isModified(bordBlTr); @@ -350,7 +349,7 @@ public final class CFRuleRecord extends StandardRecord { { setModified(modified,bordBlTr); } - + public boolean isPatternStyleModified() { return isModified(pattStyle); @@ -360,7 +359,7 @@ public final class CFRuleRecord extends StandardRecord { { setModified(modified,pattStyle); } - + public boolean isPatternColorModified() { return isModified(pattCol); @@ -370,7 +369,7 @@ public final class CFRuleRecord extends StandardRecord { { setModified(modified,pattCol); } - + public boolean isPatternBackgroundColorModified() { return isModified(pattBgCol); @@ -380,7 +379,7 @@ public final class CFRuleRecord extends StandardRecord { { setModified(modified,pattBgCol); } - + private boolean getOptionFlag(BitField field) { return field.isSet(field_5_options); @@ -390,12 +389,12 @@ public final class CFRuleRecord extends StandardRecord { { field_5_options = field.setBoolean(field_5_options, flag); } - + /** * get the stack of the 1st expression as a list * * @return list of tokens (casts stack to a list and returns it!) - * this method can return null is we are unable to create Ptgs from + * this method can return null is we are unable to create Ptgs from * existing excel file * callers should check for null! */ @@ -432,7 +431,7 @@ public final class CFRuleRecord extends StandardRecord { private static int getFormulaSize(Formula formula) { return formula.getEncodedTokenSize(); } - + /** * called by the class that is responsible for writing this sucker. * Subclasses should implement this so that their data is passed back in a @@ -441,30 +440,30 @@ public final class CFRuleRecord extends StandardRecord { * @param out the stream to write to */ public void serialize(LittleEndianOutput out) { - + int formula1Len=getFormulaSize(field_17_formula1); int formula2Len=getFormulaSize(field_18_formula2); - + out.writeByte(field_1_condition_type); out.writeByte(field_2_comparison_operator); out.writeShort(formula1Len); out.writeShort(formula2Len); out.writeInt(field_5_options); out.writeShort(field_6_not_used); - + if (containsFontFormattingBlock()) { byte[] fontFormattingRawRecord = fontFormatting.getRawRecord(); out.write(fontFormattingRawRecord); } - + if (containsBorderFormattingBlock()) { borderFormatting.serialize(out); } - + if (containsPatternFormattingBlock()) { patternFormatting.serialize(out); } - + field_17_formula1.serializeTokens(out); field_18_formula2.serializeTokens(out); } @@ -499,7 +498,7 @@ public final class CFRuleRecord extends StandardRecord { } return buffer.toString(); } - + public Object clone() { CFRuleRecord rec = new CFRuleRecord(field_1_condition_type, field_2_comparison_operator); rec.field_5_options = field_5_options; @@ -524,7 +523,7 @@ public final class CFRuleRecord extends StandardRecord { * this call will produce the wrong results if the formula contains any cell references * One approach might be to apply the inverse of SharedFormulaRecord.convertSharedFormulas(Stack, int, int) * Note - two extra parameters (rowIx & colIx) will be required. They probably come from one of the Region objects. - * + * * @return null if formula was null. */ private static Ptg[] parseFormula(String formula, HSSFSheet sheet) { diff --git a/src/java/org/apache/poi/hssf/record/ContinueRecord.java b/src/java/org/apache/poi/hssf/record/ContinueRecord.java index cbf28b5800..d43df86c64 100644 --- a/src/java/org/apache/poi/hssf/record/ContinueRecord.java +++ b/src/java/org/apache/poi/hssf/record/ContinueRecord.java @@ -18,7 +18,6 @@ package org.apache.poi.hssf.record; import org.apache.poi.util.HexDump; -import org.apache.poi.util.LittleEndian; import org.apache.poi.util.LittleEndianOutput; /** diff --git a/src/java/org/apache/poi/hssf/record/RecordFactory.java b/src/java/org/apache/poi/hssf/record/RecordFactory.java index f933d4bcdb..904ed17e4a 100644 --- a/src/java/org/apache/poi/hssf/record/RecordFactory.java +++ b/src/java/org/apache/poi/hssf/record/RecordFactory.java @@ -17,7 +17,6 @@ package org.apache.poi.hssf.record; -import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; diff --git a/src/java/org/apache/poi/hssf/record/SelectionRecord.java b/src/java/org/apache/poi/hssf/record/SelectionRecord.java index 2a74992687..3539ba57d5 100644 --- a/src/java/org/apache/poi/hssf/record/SelectionRecord.java +++ b/src/java/org/apache/poi/hssf/record/SelectionRecord.java @@ -19,7 +19,6 @@ package org.apache.poi.hssf.record; import org.apache.poi.hssf.util.CellRangeAddress8Bit; import org.apache.poi.util.HexDump; -import org.apache.poi.util.LittleEndian; import org.apache.poi.util.LittleEndianOutput; /** @@ -59,7 +58,7 @@ public final class SelectionRecord extends StandardRecord { field_3_col_active_cell = in.readShort(); field_4_active_cell_ref_index = in.readShort(); int field_5_num_refs = in.readUShort(); - + field_6_refs = new CellRangeAddress8Bit[field_5_num_refs]; for (int i = 0; i < field_6_refs.length; i++) { field_6_refs[i] = new CellRangeAddress8Bit(in); @@ -141,7 +140,7 @@ public final class SelectionRecord extends StandardRecord { return sb.toString(); } protected int getDataSize() { - return 9 // 1 byte + 4 shorts + return 9 // 1 byte + 4 shorts + CellRangeAddress8Bit.getEncodedSize(field_6_refs.length); } public void serialize(LittleEndianOutput out) { diff --git a/src/java/org/apache/poi/hssf/record/SubRecord.java b/src/java/org/apache/poi/hssf/record/SubRecord.java index 78bcb4eee2..689e4fcd55 100644 --- a/src/java/org/apache/poi/hssf/record/SubRecord.java +++ b/src/java/org/apache/poi/hssf/record/SubRecord.java @@ -17,7 +17,6 @@ package org.apache.poi.hssf.record; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import org.apache.poi.hssf.record.formula.Area3DPtg; @@ -26,7 +25,6 @@ import org.apache.poi.hssf.record.formula.Ptg; import org.apache.poi.hssf.record.formula.Ref3DPtg; import org.apache.poi.hssf.record.formula.RefPtg; import org.apache.poi.util.HexDump; -import org.apache.poi.util.LittleEndian; import org.apache.poi.util.LittleEndianByteArrayInputStream; import org.apache.poi.util.LittleEndianInput; import org.apache.poi.util.LittleEndianOutput; @@ -37,6 +35,7 @@ import org.apache.poi.util.LittleEndianOutputStream; */ public abstract class SubRecord { protected SubRecord() { + // no fields to initialise } public static SubRecord createSubRecord(LittleEndianInput in) { @@ -78,8 +77,8 @@ public abstract class SubRecord { public abstract void serialize(LittleEndianOutput out); public abstract Object clone(); - - + + private static final class UnknownSubRecord extends SubRecord { private final int _sid; @@ -118,7 +117,7 @@ public abstract class SubRecord { private static final class LbsDataSubRecord extends SubRecord { public static final int sid = 0x0013; - + private int _unknownShort1; private int _unknownInt4; private Ptg _linkPtg; @@ -137,8 +136,8 @@ public abstract class SubRecord { if (linkSize > 0) { int formulaSize = in.readUShort(); _unknownInt4 = in.readInt(); - - + + byte[] buf = new byte[formulaSize]; in.readFully(buf); _linkPtg = readRefPtg(buf); @@ -152,7 +151,7 @@ public abstract class SubRecord { default: throw new RecordFormatException("Unexpected leftover bytes"); } - + } else { _unknownInt4 = 0; _linkPtg = null; @@ -165,11 +164,11 @@ public abstract class SubRecord { _comboStyle = in.readUShort(); _lineCount = in.readUShort(); _unknownShort13 = in.readUShort(); - + } protected int getDataSize() { int result = 2; // 2 initial shorts - + // optional link formula if (_linkPtg != null) { result += 2; // encoded Ptg size diff --git a/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java b/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java index 7d4f65acd9..fd34081e6f 100644 --- a/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java +++ b/src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java @@ -17,7 +17,6 @@ package org.apache.poi.hssf.record.formula; -import org.apache.poi.hssf.record.UnicodeString; import org.apache.poi.hssf.record.constant.ConstantValueParser; import org.apache.poi.hssf.record.constant.ErrorConstant; import org.apache.poi.util.LittleEndianInput; @@ -25,20 +24,20 @@ import org.apache.poi.util.LittleEndianOutput; /** * ArrayPtg - handles arrays - * + * * The ArrayPtg is a little weird, the size of the Ptg when parsing initially only * includes the Ptg sid and the reserved bytes. The next Ptg in the expression then follows. * It is only after the "size" of all the Ptgs is met, that the ArrayPtg data is actually - * held after this. So Ptg.createParsedExpression keeps track of the number of + * held after this. So Ptg.createParsedExpression keeps track of the number of * ArrayPtg elements and need to parse the data upto the FORMULA record size. - * + * * @author Jason Height (jheight at chariot dot net dot au) */ public final class ArrayPtg extends Ptg { public static final byte sid = 0x20; private static final int RESERVED_FIELD_LEN = 7; - /** + /** * The size of the plain tArray token written within the standard formula tokens * (not including the data which comes after all formula tokens) */ @@ -48,7 +47,7 @@ public final class ArrayPtg extends Ptg { // TODO - fix up field visibility and subclasses private final byte[] field_1_reserved; - + // data from these fields comes after the Ptg data of all tokens in current formula private int token_1_columns; private short token_2_rows; @@ -78,7 +77,7 @@ public final class ArrayPtg extends Ptg { vv[getValueIndex(c, r)] = rowData[c]; } } - + token_3_arrayValues = vv; field_1_reserved = DEFAULT_RESERVED_DATA; } @@ -98,13 +97,13 @@ public final class ArrayPtg extends Ptg { } return result; } - + public boolean isBaseToken() { return false; } - - /** - * Read in the actual token (array) values. This occurs + + /** + * Read in the actual token (array) values. This occurs * AFTER the last Ptg in the expression. * See page 304-305 of Excel97-2007BinaryFileFormat(xls)Specification.pdf */ @@ -116,10 +115,10 @@ public final class ArrayPtg extends Ptg { //Which is not explicitly documented. nColumns++; nRows++; - + token_1_columns = nColumns; token_2_rows = nRows; - + int totalCount = nRows * nColumns; token_3_arrayValues = ConstantValueParser.parse(in, totalCount); } @@ -143,11 +142,11 @@ public final class ArrayPtg extends Ptg { */ /* package */ int getValueIndex(int colIx, int rowIx) { if(colIx < 0 || colIx >= token_1_columns) { - throw new IllegalArgumentException("Specified colIx (" + colIx + throw new IllegalArgumentException("Specified colIx (" + colIx + ") is outside the allowed range (0.." + (token_1_columns-1) + ")"); } if(rowIx < 0 || rowIx >= token_2_rows) { - throw new IllegalArgumentException("Specified rowIx (" + rowIx + throw new IllegalArgumentException("Specified rowIx (" + rowIx + ") is outside the allowed range (0.." + (token_2_rows-1) + ")"); } return rowIx * token_1_columns + colIx; @@ -176,7 +175,7 @@ public final class ArrayPtg extends Ptg { /** This size includes the size of the array Ptg plus the Array Ptg Token value size*/ public int getSize() { - return PLAIN_TOKEN_SIZE + return PLAIN_TOKEN_SIZE // data written after the all tokens: + 1 + 2 // column, row + ConstantValueParser.getEncodedSize(token_3_arrayValues); @@ -200,7 +199,7 @@ public final class ArrayPtg extends Ptg { b.append("}"); return b.toString(); } - + private static String getConstantText(Object o) { if (o == null) { @@ -220,7 +219,7 @@ public final class ArrayPtg extends Ptg { } throw new IllegalArgumentException("Unexpected constant class (" + o.getClass().getName() + ")"); } - + public byte getDefaultOperandClass() { return Ptg.CLASS_ARRAY; } diff --git a/src/java/org/apache/poi/hssf/record/formula/RefPtgBase.java b/src/java/org/apache/poi/hssf/record/formula/RefPtgBase.java index 1bef14d90e..70ed4da87a 100644 --- a/src/java/org/apache/poi/hssf/record/formula/RefPtgBase.java +++ b/src/java/org/apache/poi/hssf/record/formula/RefPtgBase.java @@ -22,11 +22,10 @@ import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.LittleEndianInput; import org.apache.poi.util.LittleEndianOutput; -import org.apache.poi.ss.SpreadsheetVersion; /** * ReferencePtgBase - handles references (such as A1, A2, IA4) - * + * * @author Andrew C. Oliver (acoliver@apache.org) * @author Jason Height (jheight at chariot dot net dot au) */ diff --git a/src/java/org/apache/poi/hssf/record/formula/atp/ParityFunction.java b/src/java/org/apache/poi/hssf/record/formula/atp/ParityFunction.java index 602710e984..9235d15b1c 100644 --- a/src/java/org/apache/poi/hssf/record/formula/atp/ParityFunction.java +++ b/src/java/org/apache/poi/hssf/record/formula/atp/ParityFunction.java @@ -19,7 +19,6 @@ package org.apache.poi.hssf.record.formula.atp; import org.apache.poi.hssf.record.formula.eval.BoolEval; import org.apache.poi.hssf.record.formula.eval.ErrorEval; -import org.apache.poi.hssf.record.formula.eval.ValueEval; import org.apache.poi.hssf.record.formula.eval.EvaluationException; import org.apache.poi.hssf.record.formula.eval.OperandResolver; import org.apache.poi.hssf.record.formula.eval.ValueEval; diff --git a/src/java/org/apache/poi/hssf/record/formula/atp/YearFrac.java b/src/java/org/apache/poi/hssf/record/formula/atp/YearFrac.java index baab17991a..4b2ba89071 100644 --- a/src/java/org/apache/poi/hssf/record/formula/atp/YearFrac.java +++ b/src/java/org/apache/poi/hssf/record/formula/atp/YearFrac.java @@ -22,15 +22,14 @@ import java.util.GregorianCalendar; import java.util.regex.Pattern; import org.apache.poi.hssf.record.formula.eval.ErrorEval; -import org.apache.poi.hssf.record.formula.eval.ValueEval; import org.apache.poi.hssf.record.formula.eval.EvaluationException; import org.apache.poi.hssf.record.formula.eval.NumberEval; import org.apache.poi.hssf.record.formula.eval.OperandResolver; import org.apache.poi.hssf.record.formula.eval.StringEval; import org.apache.poi.hssf.record.formula.eval.ValueEval; import org.apache.poi.hssf.record.formula.functions.FreeRefFunction; -import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.formula.EvaluationWorkbook; +import org.apache.poi.ss.usermodel.DateUtil; /** * Implementation of Excel 'Analysis ToolPak' function YEARFRAC()
* diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java b/src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java index e8e13bb63e..513ac619f4 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java @@ -17,13 +17,8 @@ package org.apache.poi.hssf.usermodel; -import org.apache.poi.ddf.EscherRecord; -import org.apache.poi.ddf.EscherClientAnchorRecord; -import org.apache.poi.ddf.EscherChildAnchorRecord; -public class HSSFChildAnchor - extends HSSFAnchor -{ +public final class HSSFChildAnchor extends HSSFAnchor { public HSSFChildAnchor() { } @@ -50,5 +45,4 @@ public class HSSFChildAnchor { return dy1 > dy2; } - } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCreationHelper.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCreationHelper.java index 569ad6ff0e..faee42b83f 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCreationHelper.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCreationHelper.java @@ -14,54 +14,50 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ + package org.apache.poi.hssf.usermodel; import org.apache.poi.ss.usermodel.CreationHelper; -import org.apache.poi.ss.usermodel.Sheet; public class HSSFCreationHelper implements CreationHelper { private HSSFWorkbook workbook; - private HSSFDataFormat dataFormat; - + private HSSFDataFormat dataFormat; + HSSFCreationHelper(HSSFWorkbook wb) { workbook = wb; - + // Create the things we only ever need one of dataFormat = new HSSFDataFormat(workbook.getWorkbook()); } - - /** - * Creates a new HSSFRichTextString for you. - */ + public HSSFRichTextString createRichTextString(String text) { return new HSSFRichTextString(text); } - + public HSSFDataFormat createDataFormat() { return dataFormat; } - + public HSSFHyperlink createHyperlink(int type) { return new HSSFHyperlink(type); } - /** - * Creates a HSSFFormulaEvaluator, the object that evaluates formula cells. - * - * @return a HSSFFormulaEvaluator instance - */ - public HSSFFormulaEvaluator createFormulaEvaluator(){ - return new HSSFFormulaEvaluator(workbook); - } - - /** - * Creates a HSSFClientAnchor. Use this object to position drawing object in a sheet - * - * @return a HSSFClientAnchor instance - * @see org.apache.poi.ss.usermodel.Drawing - */ - public HSSFClientAnchor createClientAnchor(){ - return new HSSFClientAnchor(); - } + /** + * Creates a HSSFFormulaEvaluator, the object that evaluates formula cells. + * + * @return a HSSFFormulaEvaluator instance + */ + public HSSFFormulaEvaluator createFormulaEvaluator(){ + return new HSSFFormulaEvaluator(workbook); + } + /** + * Creates a HSSFClientAnchor. Use this object to position drawing object in a sheet + * + * @return a HSSFClientAnchor instance + * @see org.apache.poi.ss.usermodel.Drawing + */ + public HSSFClientAnchor createClientAnchor(){ + return new HSSFClientAnchor(); + } } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormatter.java b/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormatter.java index 4eead2a5b6..6396492d8e 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormatter.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormatter.java @@ -17,21 +17,11 @@ package org.apache.poi.hssf.usermodel; -import org.apache.poi.ss.usermodel.DataFormatter; - import java.text.DecimalFormat; -import java.text.FieldPosition; import java.text.Format; -import java.text.ParsePosition; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; + +import org.apache.poi.ss.usermodel.DataFormatter; /** * HSSFDataFormatter contains methods for formatting the value stored in an @@ -73,7 +63,6 @@ import java.util.regex.Pattern; * cell's data format string. * * @author James May (james dot may at fmr dot com) - * */ public final class HSSFDataFormatter extends DataFormatter { diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFTextbox.java b/src/java/org/apache/poi/hssf/usermodel/HSSFTextbox.java index 34a5a15841..2548bf5114 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFTextbox.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFTextbox.java @@ -19,9 +19,6 @@ package org.apache.poi.hssf.usermodel; import org.apache.poi.ss.usermodel.RichTextString; -import org.apache.poi.util.BitField; -import org.apache.poi.util.BitFieldFactory; - /** * A textbox is a shape that may hold a rich text string. * diff --git a/src/java/org/apache/poi/poifs/dev/POIFSLister.java b/src/java/org/apache/poi/poifs/dev/POIFSLister.java index cdd9902c40..691df5a042 100644 --- a/src/java/org/apache/poi/poifs/dev/POIFSLister.java +++ b/src/java/org/apache/poi/poifs/dev/POIFSLister.java @@ -21,78 +21,69 @@ import java.io.FileInputStream; import java.io.IOException; import java.util.Iterator; -import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DirectoryNode; -import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.DocumentNode; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * A lister of the entries in POIFS files. - * + * * Much simpler than {@link POIFSViewer} */ public class POIFSLister { - /** - * Display the entries of multiple POIFS files - * - * @param args the names of the files to be displayed - */ - public static void main(final String args[]) throws IOException { - if (args.length == 0) - { - System.err.println("Must specify at least one file to view"); - System.exit(1); - } + /** + * Display the entries of multiple POIFS files + * + * @param args the names of the files to be displayed + */ + public static void main(final String args[]) throws IOException { + if (args.length == 0) { + System.err.println("Must specify at least one file to view"); + System.exit(1); + } - boolean withSizes = false; - for (int j = 0; j < args.length; j++) { - if(args[j].equalsIgnoreCase("-size") || - args[j].equalsIgnoreCase("-sizes")) { - withSizes = true; - } else { - viewFile(args[j], withSizes); - } - } - } + boolean withSizes = false; + for (int j = 0; j < args.length; j++) { + if (args[j].equalsIgnoreCase("-size") || args[j].equalsIgnoreCase("-sizes")) { + withSizes = true; + } else { + viewFile(args[j], withSizes); + } + } + } - public static void viewFile(final String filename, boolean withSizes) throws IOException - { - POIFSFileSystem fs = new POIFSFileSystem( - new FileInputStream(filename) - ); - displayDirectory(fs.getRoot(), "", withSizes); - } - - public static void displayDirectory(DirectoryNode dir, String indent, boolean withSizes) { - System.out.println(indent + dir.getName() + " -"); - String newIndent = indent + " "; - - boolean hadChildren = false; - for(Iterator it = dir.getEntries(); it.hasNext(); ) { - hadChildren = true; - Object entry = it.next(); - if(entry instanceof DirectoryNode) { - displayDirectory((DirectoryNode)entry, newIndent, withSizes); - } else { - DocumentNode doc = (DocumentNode)entry; - String name = doc.getName(); - String size = ""; - if(name.charAt(0) < 10) { - String altname = "(0x0" + (int)name.charAt(0) + ")" + name.substring(1); - name = name.substring(1) + " <" + altname + ">"; - } - if(withSizes) { - size = " [" + - doc.getSize() + " / 0x" + - Integer.toHexString(doc.getSize()) + - "]"; - } - System.out.println(newIndent + name + size); - } - } - if(!hadChildren) { - System.out.println(newIndent + "(no children)"); - } - } -} \ No newline at end of file + public static void viewFile(final String filename, boolean withSizes) throws IOException { + POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filename)); + displayDirectory(fs.getRoot(), "", withSizes); + } + + public static void displayDirectory(DirectoryNode dir, String indent, boolean withSizes) { + System.out.println(indent + dir.getName() + " -"); + String newIndent = indent + " "; + + boolean hadChildren = false; + for (Iterator it = dir.getEntries(); it.hasNext();) { + hadChildren = true; + Object entry = it.next(); + if (entry instanceof DirectoryNode) { + displayDirectory((DirectoryNode) entry, newIndent, withSizes); + } else { + DocumentNode doc = (DocumentNode) entry; + String name = doc.getName(); + String size = ""; + if (name.charAt(0) < 10) { + String altname = "(0x0" + (int) name.charAt(0) + ")" + name.substring(1); + name = name.substring(1) + " <" + altname + ">"; + } + if (withSizes) { + size = " [" + doc.getSize() + " / 0x" + Integer.toHexString(doc.getSize()) + + "]"; + } + System.out.println(newIndent + name + size); + } + } + if (!hadChildren) { + System.out.println(newIndent + "(no children)"); + } + } +} diff --git a/src/java/org/apache/poi/poifs/property/DirectoryProperty.java b/src/java/org/apache/poi/poifs/property/DirectoryProperty.java index ece87efd4a..f263419910 100644 --- a/src/java/org/apache/poi/poifs/property/DirectoryProperty.java +++ b/src/java/org/apache/poi/poifs/property/DirectoryProperty.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,44 +14,35 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.poifs.property; -import java.util.*; - import java.io.IOException; - -import org.apache.poi.poifs.storage.SmallDocumentBlock; +import java.util.*; /** * Directory property * * @author Marc Johnson (mjohnson at apache dot org) */ +public class DirectoryProperty extends Property implements Parent { // TODO - fix instantiable superclass -public class DirectoryProperty - extends Property - implements Parent -{ - - // List of Property instances - private List _children; + /** List of Property instances */ + private List _children; - // set of children's names - private Set _children_names; + /** set of children's names */ + private Set _children_names; /** * Default constructor * * @param name the name of the directory */ - public DirectoryProperty(String name) { super(); - _children = new ArrayList(); - _children_names = new HashSet(); + _children = new ArrayList(); + _children_names = new HashSet(); setName(name); setSize(0); setPropertyType(PropertyConstants.DIRECTORY_TYPE); @@ -67,13 +57,12 @@ public class DirectoryProperty * @param array byte data * @param offset offset into byte data */ - protected DirectoryProperty(final int index, final byte [] array, final int offset) { super(index, array, offset); - _children = new ArrayList(); - _children_names = new HashSet(); + _children = new ArrayList(); + _children_names = new HashSet(); } /** @@ -84,8 +73,7 @@ public class DirectoryProperty * * @return true if the name change could be made, else false */ - - public boolean changeName(final Property property, final String newName) + public boolean changeName(Property property, String newName) { boolean result; String oldName = property.getName(); @@ -116,8 +104,7 @@ public class DirectoryProperty * * @return true if the Property could be deleted, else false */ - - public boolean deleteChild(final Property property) + public boolean deleteChild(Property property) { boolean result = _children.remove(property); @@ -128,9 +115,7 @@ public class DirectoryProperty return result; } - public static class PropertyComparator - implements Comparator - { + public static class PropertyComparator implements Comparator { /** * Object equality, implemented as object identity @@ -139,7 +124,6 @@ public class DirectoryProperty * * @return true if identical, else false */ - public boolean equals(Object o) { return this == o; @@ -160,12 +144,11 @@ public class DirectoryProperty * zero if o1 == o2, * positive value if o1 > o2. */ - - public int compare(Object o1, Object o2) + public int compare(Property o1, Property o2) { String VBA_PROJECT = "_VBA_PROJECT"; - String name1 = (( Property ) o1).getName(); - String name2 = (( Property ) o2).getName(); + String name1 = o1.getName(); + String name2 = o2.getName(); int result = name1.length() - name2.length(); if (result == 0) @@ -200,14 +183,11 @@ public class DirectoryProperty } return result; } - } // end private class PropertyComparator - - /* ********** START extension of Property ********** */ + } /** * @return true if a directory type Property */ - public boolean isDirectory() { return true; @@ -217,13 +197,11 @@ public class DirectoryProperty * Perform whatever activities need to be performed prior to * writing */ - protected void preWrite() { if (_children.size() > 0) { - Property[] children = - ( Property [] ) _children.toArray(new Property[ 0 ]); + Property[] children = _children.toArray(new Property[ 0 ]); Arrays.sort(children, new PropertyComparator()); int midpoint = children.length / 2; @@ -259,17 +237,13 @@ public class DirectoryProperty } } - /* ********** END extension of Property ********** */ - /* ********** START implementation of Parent ********** */ - /** * Get an iterator over the children of this Parent; all elements * are instances of Property. * * @return Iterator of children; may refer to an empty collection */ - - public Iterator getChildren() + public Iterator getChildren() { return _children.iterator(); } @@ -282,7 +256,6 @@ public class DirectoryProperty * @exception IOException if we already have a child with the same * name */ - public void addChild(final Property property) throws IOException { @@ -295,7 +268,4 @@ public class DirectoryProperty _children_names.add(name); _children.add(property); } - - /* ********** END implementation of Parent ********** */ -} // end public class DirectoryProperty - +} diff --git a/src/java/org/apache/poi/poifs/property/PropertyTable.java b/src/java/org/apache/poi/poifs/property/PropertyTable.java index 00b306b792..09e447b053 100644 --- a/src/java/org/apache/poi/poifs/property/PropertyTable.java +++ b/src/java/org/apache/poi/poifs/property/PropertyTable.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,20 +14,19 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.poifs.property; import java.io.IOException; import java.io.OutputStream; - -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Stack; import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.poifs.filesystem.BATManaged; import org.apache.poi.poifs.storage.BlockWritable; import org.apache.poi.poifs.storage.PropertyBlock; -import org.apache.poi.poifs.storage.RawDataBlock; import org.apache.poi.poifs.storage.RawDataBlockList; /** @@ -38,22 +36,15 @@ import org.apache.poi.poifs.storage.RawDataBlockList; * * @author Marc Johnson (mjohnson at apache dot org) */ - -public class PropertyTable - implements BATManaged, BlockWritable -{ +public final class PropertyTable implements BATManaged, BlockWritable { private int _start_block; - private List _properties; + private List _properties; private BlockWritable[] _blocks; - /** - * Default constructor - */ - public PropertyTable() { _start_block = POIFSConstants.END_OF_CHAIN; - _properties = new ArrayList(); + _properties = new ArrayList(); addProperty(new RootProperty()); _blocks = null; } @@ -69,7 +60,6 @@ public class PropertyTable * @exception IOException if anything goes wrong (which should be * a result of the input being NFG) */ - public PropertyTable(final int startBlock, final RawDataBlockList blockList) throws IOException @@ -87,8 +77,7 @@ public class PropertyTable * * @param property the new Property to manage */ - - public void addProperty(final Property property) + public void addProperty(Property property) { _properties.add(property); } @@ -98,7 +87,6 @@ public class PropertyTable * * @param property the Property to be removed */ - public void removeProperty(final Property property) { _properties.remove(property); @@ -109,7 +97,6 @@ public class PropertyTable * * @return the root property */ - public RootProperty getRoot() { @@ -120,11 +107,9 @@ public class PropertyTable /** * Prepare to be written */ - public void preWrite() { - Property[] properties = - ( Property [] ) _properties.toArray(new Property[ 0 ]); + Property[] properties = _properties.toArray(new Property[ 0 ]); // give each property its index for (int k = 0; k < properties.length; k++) @@ -147,7 +132,6 @@ public class PropertyTable * * @return start block index */ - public int getStartBlock() { return _start_block; @@ -164,12 +148,12 @@ public class PropertyTable // property has no children return; } - Stack children = new Stack(); + Stack children = new Stack(); children.push(_properties.get(index)); while (!children.empty()) { - Property property = ( Property ) children.pop(); + Property property = children.pop(); root.addChild(property); if (property.isDirectory()) @@ -189,14 +173,11 @@ public class PropertyTable } } - /* ********** START implementation of BATManaged ********** */ - /** * Return the number of BigBlock's this instance uses * * @return count of BigBlock instances */ - public int countBlocks() { return (_blocks == null) ? 0 @@ -209,15 +190,11 @@ public class PropertyTable * @param index index into the array of BigBlock instances making * up the the filesystem */ - public void setStartBlock(final int index) { _start_block = index; } - /* ********** END implementation of BATManaged ********** */ - /* ********** START implementation of BlockWritable ********** */ - /** * Write the storage to an OutputStream * @@ -227,7 +204,6 @@ public class PropertyTable * @exception IOException on problems writing to the specified * stream */ - public void writeBlocks(final OutputStream stream) throws IOException { @@ -239,7 +215,4 @@ public class PropertyTable } } } - - /* ********** END implementation of BlockWritable ********** */ -} // end public class PropertyTable - +} diff --git a/src/java/org/apache/poi/poifs/property/RootProperty.java b/src/java/org/apache/poi/poifs/property/RootProperty.java index afa82ed1a8..cb4b66e614 100644 --- a/src/java/org/apache/poi/poifs/property/RootProperty.java +++ b/src/java/org/apache/poi/poifs/property/RootProperty.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,14 +14,9 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.poifs.property; -import java.util.*; - -import java.io.IOException; - import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.poifs.storage.SmallDocumentBlock; @@ -31,14 +25,7 @@ import org.apache.poi.poifs.storage.SmallDocumentBlock; * * @author Marc Johnson (mjohnson at apache dot org) */ - -public class RootProperty - extends DirectoryProperty -{ - - /** - * Default constructor - */ +public final class RootProperty extends DirectoryProperty { RootProperty() { @@ -57,7 +44,6 @@ public class RootProperty * @param array byte data * @param offset offset into byte data */ - protected RootProperty(final int index, final byte [] array, final int offset) { @@ -69,10 +55,8 @@ public class RootProperty * * @param size size in terms of small blocks */ - public void setSize(int size) { super.setSize(SmallDocumentBlock.calcSize(size)); } -} // end public class RootProperty - +} diff --git a/src/java/org/apache/poi/poifs/storage/BATBlock.java b/src/java/org/apache/poi/poifs/storage/BATBlock.java index 5aa4678b60..949a5254a7 100644 --- a/src/java/org/apache/poi/poifs/storage/BATBlock.java +++ b/src/java/org/apache/poi/poifs/storage/BATBlock.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.poifs.storage; @@ -26,7 +24,6 @@ import java.util.Arrays; import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.util.IntegerField; -import org.apache.poi.util.LittleEndian; import org.apache.poi.util.LittleEndianConsts; /** @@ -35,10 +32,7 @@ import org.apache.poi.util.LittleEndianConsts; * * @author Marc Johnson (mjohnson at apache dot org) */ - -public class BATBlock - extends BigBlock -{ +public final class BATBlock extends BigBlock { private static final int _entries_per_block = POIFSConstants.BIG_BLOCK_SIZE / LittleEndianConsts.INT_SIZE; private static final int _entries_per_xbat_block = _entries_per_block diff --git a/src/java/org/apache/poi/poifs/storage/BlockAllocationTableReader.java b/src/java/org/apache/poi/poifs/storage/BlockAllocationTableReader.java index 60ce199ee5..0fb3b48995 100644 --- a/src/java/org/apache/poi/poifs/storage/BlockAllocationTableReader.java +++ b/src/java/org/apache/poi/poifs/storage/BlockAllocationTableReader.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,7 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.poifs.storage; @@ -43,9 +41,7 @@ import org.apache.poi.util.LittleEndianConsts; * * @author Marc Johnson (mjohnson at apache dot org) */ - -public class BlockAllocationTableReader -{ +public final class BlockAllocationTableReader { private IntList _entries; /** @@ -154,12 +150,6 @@ public class BlockAllocationTableReader setEntries(blocks, raw_block_list); } - /** - * Constructor BlockAllocationTableReader - * - * - */ - BlockAllocationTableReader() { _entries = new IntList(); @@ -177,17 +167,16 @@ public class BlockAllocationTableReader * * @exception IOException if there is a problem acquiring the blocks */ - ListManagedBlock [] fetchBlocks(final int startBlock, final int headerPropertiesStartBlock, final BlockList blockList) throws IOException { - List blocks = new ArrayList(); + List blocks = new ArrayList(); int currentBlock = startBlock; boolean firstPass = true; ListManagedBlock dataBlock = null; - + // Process the chain from the start to the end // Normally we have header, data, end // Sometimes we have data, header, end @@ -216,9 +205,8 @@ public class BlockAllocationTableReader } } } - - return ( ListManagedBlock [] ) blocks - .toArray(new ListManagedBlock[ blocks.size() ]); + + return blocks.toArray(new ListManagedBlock[blocks.size()]); } // methods for debugging reader @@ -230,7 +218,6 @@ public class BlockAllocationTableReader * * @return true if the specific block is used, else false */ - boolean isUsed(final int index) { boolean rval = false; @@ -238,9 +225,8 @@ public class BlockAllocationTableReader try { rval = _entries.get(index) != -1; - } - catch (IndexOutOfBoundsException ignored) - { + } catch (IndexOutOfBoundsException e) { + // ignored } return rval; } @@ -256,7 +242,6 @@ public class BlockAllocationTableReader * * @exception IOException if the current block is unused */ - int getNextBlockIndex(final int index) throws IOException { @@ -264,10 +249,7 @@ public class BlockAllocationTableReader { return _entries.get(index); } - else - { - throw new IOException("index " + index + " is unused"); - } + throw new IOException("index " + index + " is unused"); } /** @@ -276,10 +258,7 @@ public class BlockAllocationTableReader * @param blocks the array of blocks containing the indices * @param raw_blocks the list of blocks being managed. Unused * blocks will be eliminated from the list - * - * @exception IOException */ - private void setEntries(final ListManagedBlock [] blocks, final BlockList raw_blocks) throws IOException @@ -308,5 +287,4 @@ public class BlockAllocationTableReader } raw_blocks.setBAT(this); } -} // end class BlockAllocationTableReader - +} diff --git a/src/java/org/apache/poi/poifs/storage/BlockAllocationTableWriter.java b/src/java/org/apache/poi/poifs/storage/BlockAllocationTableWriter.java index b2f6af2c63..e2adcb766f 100644 --- a/src/java/org/apache/poi/poifs/storage/BlockAllocationTableWriter.java +++ b/src/java/org/apache/poi/poifs/storage/BlockAllocationTableWriter.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,20 +14,15 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.poifs.storage; import java.io.IOException; import java.io.OutputStream; -import java.util.*; - import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.poifs.filesystem.BATManaged; import org.apache.poi.util.IntList; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.LittleEndianConsts; /** * This class manages and creates the Block Allocation Table, which is @@ -45,10 +39,7 @@ import org.apache.poi.util.LittleEndianConsts; * * @author Marc Johnson (mjohnson at apache dot org) */ - -public class BlockAllocationTableWriter - implements BlockWritable, BATManaged -{ +public final class BlockAllocationTableWriter implements BlockWritable, BATManaged { private IntList _entries; private BATBlock[] _blocks; private int _start_block; @@ -56,7 +47,6 @@ public class BlockAllocationTableWriter /** * create a BlockAllocationTableWriter */ - public BlockAllocationTableWriter() { _start_block = POIFSConstants.END_OF_CHAIN; @@ -69,7 +59,6 @@ public class BlockAllocationTableWriter * * @return start block index of BAT blocks */ - public int createBlocks() { int xbat_blocks = 0; @@ -92,11 +81,8 @@ public class BlockAllocationTableWriter // stable ... we're OK break; } - else - { - bat_blocks = calculated_bat_blocks; - xbat_blocks = calculated_xbat_blocks; - } + bat_blocks = calculated_bat_blocks; + xbat_blocks = calculated_xbat_blocks; } int startBlock = allocateSpace(bat_blocks); @@ -112,7 +98,6 @@ public class BlockAllocationTableWriter * * @return the starting index of the blocks */ - public int allocateSpace(final int blockCount) { int startBlock = _entries.size(); @@ -136,7 +121,6 @@ public class BlockAllocationTableWriter * * @return the starting block index */ - public int getStartBlock() { return _start_block; @@ -145,14 +129,11 @@ public class BlockAllocationTableWriter /** * create the BATBlocks */ - void simpleCreateBlocks() { _blocks = BATBlock.createBATBlocks(_entries.toArray()); } - /* ********** START implementation of BlockWritable ********** */ - /** * Write the storage to an OutputStream * @@ -162,7 +143,6 @@ public class BlockAllocationTableWriter * @exception IOException on problems writing to the specified * stream */ - public void writeBlocks(final OutputStream stream) throws IOException { @@ -172,15 +152,11 @@ public class BlockAllocationTableWriter } } - /* ********** END implementation of BlockWritable ********** */ - /* ********** START implementation of BATManaged ********** */ - /** * Return the number of BigBlock's this instance uses * * @return count of BigBlock instances */ - public int countBlocks() { return _blocks.length; @@ -188,15 +164,9 @@ public class BlockAllocationTableWriter /** * Set the start block for this instance - * - * @param start_block */ - public void setStartBlock(int start_block) { _start_block = start_block; } - - /* ********** END implementation of BATManaged ********** */ -} // end class BlockAllocationTableWriter - +} diff --git a/src/java/org/apache/poi/poifs/storage/BlockListImpl.java b/src/java/org/apache/poi/poifs/storage/BlockListImpl.java index a5472d3530..df7de493a5 100644 --- a/src/java/org/apache/poi/poifs/storage/BlockListImpl.java +++ b/src/java/org/apache/poi/poifs/storage/BlockListImpl.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,30 +14,20 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.poifs.storage; -import java.io.*; - -import java.util.*; +import java.io.IOException; /** * A simple implementation of BlockList * * @author Marc Johnson (mjohnson at apache dot org */ - -class BlockListImpl - implements BlockList -{ +abstract class BlockListImpl implements BlockList { private ListManagedBlock[] _blocks; private BlockAllocationTableReader _bat; - /** - * Constructor BlockListImpl - */ - protected BlockListImpl() { _blocks = new ListManagedBlock[ 0 ]; @@ -50,21 +39,17 @@ class BlockListImpl * * @param blocks blocks to be managed */ - protected void setBlocks(final ListManagedBlock [] blocks) { _blocks = blocks; } - /* ********** START implementation of BlockList ********** */ - /** * remove the specified block from the list * * @param index the index of the specified block; if the index is * out of range, that's ok */ - public void zap(final int index) { if ((index >= 0) && (index < _blocks.length)) @@ -72,13 +57,13 @@ class BlockListImpl _blocks[ index ] = null; } } - + /** * Unit testing method. Gets, without sanity checks or * removing. */ - protected ListManagedBlock get(final int index) throws IOException { - return _blocks[index]; + protected ListManagedBlock get(final int index) { + return _blocks[index]; } /** @@ -91,7 +76,6 @@ class BlockListImpl * @exception IOException if the index is out of range or has * already been removed */ - public ListManagedBlock remove(final int index) throws IOException { @@ -112,7 +96,7 @@ class BlockListImpl catch (ArrayIndexOutOfBoundsException ignored) { throw new IOException("Cannot remove block[ " + index - + " ]; out of range[ 0 - " + + + " ]; out of range[ 0 - " + (_blocks.length-1) + " ]"); } return result; @@ -128,7 +112,6 @@ class BlockListImpl * * @exception IOException if blocks are missing */ - public ListManagedBlock [] fetchBlocks(final int startBlock, final int headerPropertiesStartBlock) throws IOException { @@ -144,10 +127,7 @@ class BlockListImpl * set the associated BlockAllocationTable * * @param bat the associated BlockAllocationTable - * - * @exception IOException */ - public void setBAT(final BlockAllocationTableReader bat) throws IOException { @@ -158,7 +138,4 @@ class BlockListImpl } _bat = bat; } - - /* ********** END implementation of BlockList ********** */ -} // end package-scope class BlockListImpl - +} diff --git a/src/java/org/apache/poi/poifs/storage/HeaderBlockConstants.java b/src/java/org/apache/poi/poifs/storage/HeaderBlockConstants.java index 075a224fa5..eebb504b45 100644 --- a/src/java/org/apache/poi/poifs/storage/HeaderBlockConstants.java +++ b/src/java/org/apache/poi/poifs/storage/HeaderBlockConstants.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,23 +14,17 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.poifs.storage; import org.apache.poi.poifs.common.POIFSConstants; -import org.apache.poi.util.IntegerField; -import org.apache.poi.util.LittleEndian; import org.apache.poi.util.LittleEndianConsts; -import org.apache.poi.util.LongField; -import org.apache.poi.util.ShortField; /** * Constants used in reading/writing the Header block * * @author Marc Johnson (mjohnson at apache dot org) */ - public interface HeaderBlockConstants { public static final long _signature = 0xE11AB1A1E011CFD0L; diff --git a/src/java/org/apache/poi/poifs/storage/PropertyBlock.java b/src/java/org/apache/poi/poifs/storage/PropertyBlock.java index 5dfaac5b76..c0400a552a 100644 --- a/src/java/org/apache/poi/poifs/storage/PropertyBlock.java +++ b/src/java/org/apache/poi/poifs/storage/PropertyBlock.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,29 +14,22 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.poifs.storage; -import java.io.*; - -import java.util.*; +import java.io.IOException; +import java.io.OutputStream; +import java.util.List; import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.poifs.property.Property; -import org.apache.poi.util.IntegerField; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.LittleEndianConsts; /** * A block of Property instances * * @author Marc Johnson (mjohnson at apache dot org) */ - -public class PropertyBlock - extends BigBlock -{ +public final class PropertyBlock extends BigBlock { private static final int _properties_per_block = POIFSConstants.BIG_BLOCK_SIZE / POIFSConstants.PROPERTY_SIZE; private Property[] _properties; diff --git a/src/java/org/apache/poi/poifs/storage/SmallBlockTableReader.java b/src/java/org/apache/poi/poifs/storage/SmallBlockTableReader.java index 4da79e71f1..c77b8fc1ad 100644 --- a/src/java/org/apache/poi/poifs/storage/SmallBlockTableReader.java +++ b/src/java/org/apache/poi/poifs/storage/SmallBlockTableReader.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,15 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.poifs.storage; -import org.apache.poi.poifs.property.RootProperty; - -import java.util.*; +import java.io.IOException; -import java.io.*; +import org.apache.poi.poifs.property.RootProperty; /** * This class implements reading the small document block list from an @@ -31,9 +27,7 @@ import java.io.*; * * @author Marc Johnson (mjohnson at apache dot org) */ - -public class SmallBlockTableReader -{ +public final class SmallBlockTableReader { /** * fetch the small document block list from an existing file @@ -48,7 +42,6 @@ public class SmallBlockTableReader * * @exception IOException */ - public static BlockList getSmallDocumentBlocks( final RawDataBlockList blockList, final RootProperty root, final int sbatStart) diff --git a/src/java/org/apache/poi/util/IntList.java b/src/java/org/apache/poi/util/IntList.java index 30498cf439..3fee8dd572 100644 --- a/src/java/org/apache/poi/util/IntList.java +++ b/src/java/org/apache/poi/util/IntList.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,12 +14,9 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.util; -import java.util.*; - /** * A List of int's; as full an implementation of the java.util.List * interface as possible, with an eye toward minimal creation of @@ -47,7 +43,6 @@ import java.util.*; * * @author Marc Johnson */ - public class IntList { private int[] _array; @@ -62,14 +57,14 @@ public class IntList public IntList() { this(_default_size); - } + } public IntList(final int initialCapacity) { this(initialCapacity,0); } - - + + /** * create a copy of an existing IntList * @@ -94,17 +89,17 @@ public class IntList _array = new int[ initialCapacity ]; if (fillval != 0) { fillval = fillvalue; - fillArray(fillval, _array, 0); + fillArray(fillval, _array, 0); } _limit = 0; } private void fillArray(int val, int[] array, int index) { for (int k = index; k < array.length; k++) { - array[k] = val; + array[k] = val; } } - + /** * add the specfied value at the specified index * @@ -653,11 +648,11 @@ public class IntList int size = (new_size == _array.length) ? new_size + 1 : new_size; int[] new_array = new int[ size ]; - + if (fillval != 0) { - fillArray(fillval, new_array, _array.length); + fillArray(fillval, new_array, _array.length); } - + System.arraycopy(_array, 0, new_array, 0, _limit); _array = new_array; } diff --git a/src/java/org/apache/poi/util/NullLogger.java b/src/java/org/apache/poi/util/NullLogger.java index d58c9789ec..a2cdbf7866 100644 --- a/src/java/org/apache/poi/util/NullLogger.java +++ b/src/java/org/apache/poi/util/NullLogger.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,12 +14,9 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.util; -import java.util.*; - /** * A logger class that strives to make it as easy as possible for * developers to write log calls, while simultaneously making those @@ -31,14 +27,13 @@ import java.util.*; * @author Glen Stampoultzis (glens at apache.org) * @author Nicola Ken Barozzi (nicolaken at apache.org) */ - public class NullLogger extends POILogger { public void initialize(final String cat) { - //do nothing + //do nothing } - + /** * Log a message * @@ -462,5 +457,5 @@ public class NullLogger extends POILogger //do nothing } -} +} diff --git a/src/java/org/apache/poi/util/ShortList.java b/src/java/org/apache/poi/util/ShortList.java index c06a9c714b..3a6cfb8d96 100644 --- a/src/java/org/apache/poi/util/ShortList.java +++ b/src/java/org/apache/poi/util/ShortList.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,12 +14,9 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.util; -import java.util.*; - /** * A List of short's; as full an implementation of the java.util.List * interface as possible, with an eye toward minimal creation of diff --git a/src/ooxml/java/org/apache/poi/POIXMLDocument.java b/src/ooxml/java/org/apache/poi/POIXMLDocument.java index 9e716e4cc8..ee4bb53c7f 100644 --- a/src/ooxml/java/org/apache/poi/POIXMLDocument.java +++ b/src/ooxml/java/org/apache/poi/POIXMLDocument.java @@ -22,7 +22,6 @@ import java.util.*; import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.util.IOUtils; import org.apache.poi.util.PackageHelper; -import org.apache.xmlbeans.XmlException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.OpenXML4JException; import org.apache.poi.openxml4j.opc.*; diff --git a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java index 0844f45189..0be0142d45 100644 --- a/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java +++ b/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java @@ -26,7 +26,6 @@ import java.util.Map.Entry; import org.apache.poi.ss.usermodel.FontFamily; import org.apache.poi.ss.usermodel.FontScheme; import org.apache.poi.ss.usermodel.BuiltinFormats; -import org.apache.poi.ss.usermodel.Font; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFFont; import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder; @@ -80,17 +79,17 @@ public class StylesTable extends POIXMLDocumentPart { * Create a new, empty StylesTable */ public StylesTable() { - super(); + super(); doc = StyleSheetDocument.Factory.newInstance(); doc.addNewStyleSheet(); // Initialization required in order to make the document readable by MSExcel initialize(); } - public StylesTable(PackagePart part, PackageRelationship rel) throws IOException { - super(part, rel); - readFrom(part.getInputStream()); - } + public StylesTable(PackagePart part, PackageRelationship rel) throws IOException { + super(part, rel); + readFrom(part.getInputStream()); + } /** * Read this shared styles table from an XML file. @@ -107,13 +106,13 @@ public class StylesTable extends POIXMLDocumentPart { numberFormats.put((int)nfmt.getNumFmtId(), nfmt.getFormatCode()); } if(doc.getStyleSheet().getFonts() != null){ - int idx = 0; - for (CTFont font : doc.getStyleSheet().getFonts().getFontArray()) { - XSSFFont f = new XSSFFont(font, idx); - fonts.add(f); - idx++; - } - } + int idx = 0; + for (CTFont font : doc.getStyleSheet().getFonts().getFontArray()) { + XSSFFont f = new XSSFFont(font, idx); + fonts.add(f); + idx++; + } + } if(doc.getStyleSheet().getFills() != null) for (CTFill fill : doc.getStyleSheet().getFills().getFillArray()) { fills.add(new XSSFCellFill(fill)); @@ -149,7 +148,7 @@ public class StylesTable extends POIXMLDocumentPart { return numberFormats.get(idx); } - public int putNumberFormat(String fmt) { + public int putNumberFormat(String fmt) { if (numberFormats.containsValue(fmt)) { // Find the key, and return that for(Integer key : numberFormats.keySet() ) { @@ -174,12 +173,12 @@ public class StylesTable extends POIXMLDocumentPart { } public int putFont(XSSFFont font) { - int idx = fonts.indexOf(font); - if (idx != -1) { - return idx; - } - fonts.add(font); - return fonts.size() - 1; + int idx = fonts.indexOf(font); + if (idx != -1) { + return idx; + } + fonts.add(font); + return fonts.size() - 1; } public XSSFCellStyle getStyleAt(int idx) { @@ -205,42 +204,42 @@ public class StylesTable extends POIXMLDocumentPart { return borders.get(idx); } - public int putBorder(XSSFCellBorder border) { - int idx = borders.indexOf(border); - if (idx != -1) { - return idx; - } - borders.add(border); - return borders.size() - 1; + public int putBorder(XSSFCellBorder border) { + int idx = borders.indexOf(border); + if (idx != -1) { + return idx; + } + borders.add(border); + return borders.size() - 1; } - public XSSFCellFill getFillAt(int idx) { - return fills.get(idx); - } + public XSSFCellFill getFillAt(int idx) { + return fills.get(idx); + } - public List getBorders(){ - return borders; - } + public List getBorders(){ + return borders; + } - public List getFills(){ - return fills; - } + public List getFills(){ + return fills; + } - public List getFonts(){ - return fonts; - } + public List getFonts(){ + return fonts; + } - public Map getNumberFormats(){ - return numberFormats; - } + public Map getNumberFormats(){ + return numberFormats; + } - public int putFill(XSSFCellFill fill) { - int idx = fills.indexOf(fill); - if (idx != -1) { - return idx; - } - fills.add(fill); - return fills.size() - 1; + public int putFill(XSSFCellFill fill) { + int idx = fills.indexOf(fill); + if (idx != -1) { + return idx; + } + fills.add(fill); + return fills.size() - 1; } public CTXf getCellXfAt(int idx) { @@ -315,31 +314,31 @@ public class StylesTable extends POIXMLDocumentPart { } doc.getStyleSheet().setNumFmts(formats); - int idx; + int idx; // Fonts CTFonts ctFonts = CTFonts.Factory.newInstance(); ctFonts.setCount(fonts.size()); - CTFont[] ctfnt = new CTFont[fonts.size()]; - idx = 0; - for(XSSFFont f : fonts) ctfnt[idx++] = f.getCTFont(); - ctFonts.setFontArray(ctfnt); + CTFont[] ctfnt = new CTFont[fonts.size()]; + idx = 0; + for(XSSFFont f : fonts) ctfnt[idx++] = f.getCTFont(); + ctFonts.setFontArray(ctfnt); doc.getStyleSheet().setFonts(ctFonts); // Fills CTFills ctFills = CTFills.Factory.newInstance(); ctFills.setCount(fills.size()); - CTFill[] ctf = new CTFill[fills.size()]; - idx = 0; - for(XSSFCellFill f : fills) ctf[idx++] = f.getCTFill(); - ctFills.setFillArray(ctf); + CTFill[] ctf = new CTFill[fills.size()]; + idx = 0; + for(XSSFCellFill f : fills) ctf[idx++] = f.getCTFill(); + ctFills.setFillArray(ctf); doc.getStyleSheet().setFills(ctFills); // Borders CTBorders ctBorders = CTBorders.Factory.newInstance(); ctBorders.setCount(borders.size()); - CTBorder[] ctb = new CTBorder[borders.size()]; - idx = 0; - for(XSSFCellBorder b : borders) ctb[idx++] = b.getCTBorder(); + CTBorder[] ctb = new CTBorder[borders.size()]; + idx = 0; + for(XSSFCellBorder b : borders) ctb[idx++] = b.getCTBorder(); ctBorders.setBorderArray(ctb); doc.getStyleSheet().setBorders(ctBorders); @@ -376,13 +375,13 @@ public class StylesTable extends POIXMLDocumentPart { doc.save(out, options); } - @Override - protected void commit() throws IOException { - PackagePart part = getPackagePart(); - OutputStream out = part.getOutputStream(); - writeTo(out); - out.close(); - } + @Override + protected void commit() throws IOException { + PackagePart part = getPackagePart(); + OutputStream out = part.getOutputStream(); + writeTo(out); + out.close(); + } private void initialize() { //CTFont ctFont = createDefaultFont(); @@ -452,36 +451,35 @@ public class StylesTable extends POIXMLDocumentPart { return this.dxfs.size(); } - public XSSFCellStyle createCellStyle() { - CTXf xf = CTXf.Factory.newInstance(); - xf.setNumFmtId(0); - xf.setFontId(0); - xf.setFillId(0); - xf.setBorderId(0); - xf.setXfId(0); - int xfSize = styleXfs.size(); - int indexXf = putCellXf(xf); - return new XSSFCellStyle(indexXf - 1, xfSize - 1, this); - } - - /** - * Finds a font that matches the one with the supplied attributes - */ - public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) { - for (XSSFFont font : fonts) { - if ( (font.getBoldweight() == boldWeight) - && font.getColor() == color - && font.getFontHeight() == fontHeight - && font.getFontName().equals(name) - && font.getItalic() == italic - && font.getStrikeout() == strikeout - && font.getTypeOffset() == typeOffset - && font.getUnderline() == underline) - { - return font; - } - } - return null; - } + public XSSFCellStyle createCellStyle() { + CTXf xf = CTXf.Factory.newInstance(); + xf.setNumFmtId(0); + xf.setFontId(0); + xf.setFillId(0); + xf.setBorderId(0); + xf.setXfId(0); + int xfSize = styleXfs.size(); + int indexXf = putCellXf(xf); + return new XSSFCellStyle(indexXf - 1, xfSize - 1, this); + } + /** + * Finds a font that matches the one with the supplied attributes + */ + public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) { + for (XSSFFont font : fonts) { + if ( (font.getBoldweight() == boldWeight) + && font.getColor() == color + && font.getFontHeight() == fontHeight + && font.getFontName().equals(name) + && font.getItalic() == italic + && font.getStrikeout() == strikeout + && font.getTypeOffset() == typeOffset + && font.getUnderline() == underline) + { + return font; + } + } + return null; + } } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCreationHelper.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCreationHelper.java index 88b9d9a87a..177cad89a9 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCreationHelper.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCreationHelper.java @@ -17,49 +17,48 @@ package org.apache.poi.xssf.usermodel; import org.apache.poi.ss.usermodel.CreationHelper; -import org.apache.poi.ss.usermodel.DataFormat; -import org.apache.poi.ss.usermodel.Hyperlink; -import org.apache.poi.ss.usermodel.RichTextString; public class XSSFCreationHelper implements CreationHelper { private XSSFWorkbook workbook; + XSSFCreationHelper(XSSFWorkbook wb) { workbook = wb; } - - /** - * Creates a new XSSFRichTextString for you. - */ + + /** + * Creates a new XSSFRichTextString for you. + */ public XSSFRichTextString createRichTextString(String text) { - XSSFRichTextString rt = new XSSFRichTextString(text); - rt.setStylesTableReference(workbook.getStylesSource()); - return rt; + XSSFRichTextString rt = new XSSFRichTextString(text); + rt.setStylesTableReference(workbook.getStylesSource()); + return rt; } - + public XSSFDataFormat createDataFormat() { return workbook.createDataFormat(); } - + public XSSFHyperlink createHyperlink(int type) { return new XSSFHyperlink(type); } - /** - * Creates a XSSFFormulaEvaluator, the object that evaluates formula cells. - * - * @return a XSSFFormulaEvaluator instance - */ - public XSSFFormulaEvaluator createFormulaEvaluator(){ - return new XSSFFormulaEvaluator(workbook); - } + /** + * Creates a XSSFFormulaEvaluator, the object that evaluates formula cells. + * + * @return a XSSFFormulaEvaluator instance + */ + public XSSFFormulaEvaluator createFormulaEvaluator() { + return new XSSFFormulaEvaluator(workbook); + } - /** - * Creates a XSSFClientAnchor. Use this object to position drawing object in a sheet - * - * @return a XSSFClientAnchor instance - * @see org.apache.poi.ss.usermodel.Drawing - */ - public XSSFClientAnchor createClientAnchor(){ - return new XSSFClientAnchor(); - } + /** + * Creates a XSSFClientAnchor. Use this object to position drawing object in + * a sheet + * + * @return a XSSFClientAnchor instance + * @see org.apache.poi.ss.usermodel.Drawing + */ + public XSSFClientAnchor createClientAnchor() { + return new XSSFClientAnchor(); + } } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java index 1daf33d52a..622104e8a5 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java @@ -53,7 +53,6 @@ import org.apache.poi.xssf.model.CalculationChain; import org.apache.poi.xssf.model.SharedStringsTable; import org.apache.poi.xssf.model.StylesTable; import org.apache.poi.xssf.model.MapInfo; -import org.apache.poi.xssf.extractor.XSSFExportToXml; import org.apache.xmlbeans.XmlException; import org.apache.xmlbeans.XmlObject; import org.apache.xmlbeans.XmlOptions; @@ -570,7 +569,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable nNames) { - throw new IllegalArgumentException("Specified name index " + nameIndex + throw new IllegalArgumentException("Specified name index " + nameIndex + " is outside the allowable range (0.." + (nNames-1) + ")."); } return namedRanges.get(nameIndex); @@ -636,7 +635,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable 0 && r.length() > 0) rng.append(','); @@ -1243,7 +1242,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable * The calculation chain object specifies the order in which the cells in a workbook were last calculated *

- * + * * @return the CalculationChain object or null if not defined */ public CalculationChain getCalculationChain(){ @@ -1302,19 +1301,19 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable getCustomXMLMappings(){ return mapInfo == null ? new ArrayList() : mapInfo.getAllXSSFMaps(); } - + /** - * + * * @return the helper class used to query the custom XML mapping defined in this workbook */ public MapInfo getMapInfo(){ return mapInfo; } - + } diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java index 32d9dc62aa..9bf8243dd2 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java @@ -18,119 +18,151 @@ package org.apache.poi.xssf.usermodel.extensions; import org.apache.poi.ss.usermodel.HeaderFooter; -import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.helpers.HeaderFooterHelper; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter; /** * Parent class of all XSSF headers and footers. - * - * For a list of all the different fields that can be - * placed into a header or footer, such as page number, - * bold, underline etc, see the follow formatting syntax - * + * + * For a list of all the different fields that can be placed into a header or + * footer, such as page number, bold, underline etc, see the follow formatting + * syntax + * * Header/Footer Formatting Syntax *

- * There are a number of formatting codes that can be written inline with the actual header / footer text, which - * affect the formatting in the header or footer. + * There are a number of formatting codes that can be written inline with the + * actual header / footer text, which affect the formatting in the header or + * footer. *

* - * This example shows the text "Center Bold Header" on the first line (center section), and the date on the second - * line (center section). - * &CCenter &"-,Bold"Bold &"-,Regular"Header_x000A_&D - * - * General Rules: - * There is no required order in which these codes must appear. - * The first occurrence of the following codes turns the formatting ON, the second occurrence turns it OFF again: - * + * This example shows the text "Center Bold Header" on the first line (center + * section), and the date on the second line (center section). &CCenter + * &"-,Bold"Bold &"-,Regular"Header_x000A_&D + * + * General Rules: There is no required order in which these codes must + * appear. The first occurrence of the following codes turns the formatting ON, + * the second occurrence turns it OFF again: + * *
- *
&L
code for "left section" (there are three header / footer locations, "left", "center", and "right"). When - * two or more occurrences of this section marker exist, the contents from all markers are concatenated, in the - * order of appearance, and placed into the left section.
- *
&P
code for "current page #"
- *
&N
code for "total pages"
- *
&font size
code for "text font size", where font size is a font size in points.
- *
&K
code for "text font color" - * RGB Color is specified as RRGGBB - * Theme Color is specifed as TTSNN where TT is the theme color Id, S is either "+" or "-" of the tint/shade - * value, NN is the tint/shade value.
- *
&S
code for "text strikethrough" on / off
- *
&X
code for "text super script" on / off
- *
&Y
code for "text subscript" on / off
- *
&C
code for "center section". When two or more occurrences of this section marker exist, the contents - * from all markers are concatenated, in the order of appearance, and placed into the center section. - * SpreadsheetML Reference Material - Worksheets 1966
- *
&D
code for "date"
- *
&T
code for "time"
- *
&G
code for "picture as background"
- *
&U
code for "text single underline"
- *
&E
code for "double underline"
- *
&R
code for "right section". When two or more occurrences of this section marker exist, the contents - * from all markers are concatenated, in the order of appearance, and placed into the right section.
- *
&Z
code for "this workbook's file path"
- *
&F
code for "this workbook's file name"
- *
&A
code for "sheet tab name"
- *
&+
code for add to page #.
- *
&-
code for subtract from page #.
- *
&"font name,font type" - code for "text font name" and "text font type", where font name and font type - * are strings specifying the name and type of the font, separated by a comma. When a hyphen appears in font - * name, it means "none specified". Both of font name and font type can be localized values. - *
&"-,Bold"
code for "bold font style"
- *
&B
also means "bold font style"
- *
&"-,Regular"
code for "regular font style"
- *
&"-,Italic"
code for "italic font style"
- *
&I
also means "italic font style"
- *
&"-,Bold Italic"
code for "bold italic font style"
- *
&O
code for "outline style"
- *
&H
code for "shadow style"
+ *
&L
+ *
code for "left section" (there are three header / footer locations, + * "left", "center", and "right"). When two or more occurrences of this section + * marker exist, the contents from all markers are concatenated, in the order of + * appearance, and placed into the left section.
+ *
&P
+ *
code for "current page #"
+ *
&N
+ *
code for "total pages"
+ *
&font size
+ *
code for "text font size", where font size is a font size in points.
+ *
&K
+ *
code for "text font color" RGB Color is specified as RRGGBB Theme Color + * is specifed as TTSNN where TT is the theme color Id, S is either "+" or "-" + * of the tint/shade value, NN is the tint/shade value.
+ *
&S
+ *
code for "text strikethrough" on / off
+ *
&X
+ *
code for "text super script" on / off
+ *
&Y
+ *
code for "text subscript" on / off
+ *
&C
+ *
code for "center section". When two or more occurrences of this section + * marker exist, the contents from all markers are concatenated, in the order of + * appearance, and placed into the center section. SpreadsheetML Reference + * Material - Worksheets 1966
+ *
&D
+ *
code for "date"
+ *
&T
+ *
code for "time"
+ *
&G
+ *
code for "picture as background"
+ *
&U
+ *
code for "text single underline"
+ *
&E
+ *
code for "double underline"
+ *
&R
+ *
code for "right section". When two or more occurrences of this section + * marker exist, the contents from all markers are concatenated, in the order of + * appearance, and placed into the right section.
+ *
&Z
+ *
code for "this workbook's file path"
+ *
&F
+ *
code for "this workbook's file name"
+ *
&A
+ *
code for "sheet tab name"
+ *
&+
+ *
code for add to page #.
+ *
&-
+ *
code for subtract from page #.
+ *
&"font name,font type" - code for "text font name" and "text font type", + * where font name and font type are strings specifying the name and type of the + * font, separated by a comma. When a hyphen appears in font name, it means + * "none specified". Both of font name and font type can be localized + * values. + *
&"-,Bold"
+ *
code for "bold font style"
+ *
&B
+ *
also means "bold font style"
+ *
&"-,Regular"
+ *
code for "regular font style"
+ *
&"-,Italic"
+ *
code for "italic font style"
+ *
&I
+ *
also means "italic font style"
+ *
&"-,Bold Italic"
+ *
code for "bold italic font style"
+ *
&O
+ *
code for "outline style"
+ *
&H
+ *
code for "shadow style"
*
- * - * + * + * */ public abstract class XSSFHeaderFooter implements HeaderFooter { - private HeaderFooterHelper helper; - private CTHeaderFooter headerFooter; + private HeaderFooterHelper helper; + private CTHeaderFooter headerFooter; private boolean stripFields = false; /** * Create an instance of XSSFHeaderFooter from the supplied XML bean + * * @param headerFooter */ - public XSSFHeaderFooter(CTHeaderFooter headerFooter) { - this.headerFooter = headerFooter; - this.helper = new HeaderFooterHelper(); - } - - /** - * Returns the underlying CTHeaderFooter xml bean - * - * @return the underlying CTHeaderFooter xml bean - */ - public CTHeaderFooter getHeaderFooter() { - return this.headerFooter; - } - - public String getValue() { - String value = getText(); - if(value == null) - return ""; - return value; - } - - + public XSSFHeaderFooter(CTHeaderFooter headerFooter) { + this.headerFooter = headerFooter; + this.helper = new HeaderFooterHelper(); + } + + /** + * Returns the underlying CTHeaderFooter xml bean + * + * @return the underlying CTHeaderFooter xml bean + */ + public CTHeaderFooter getHeaderFooter() { + return this.headerFooter; + } + + public String getValue() { + String value = getText(); + if (value == null) + return ""; + return value; + } + /** - * Are fields currently being stripped from - * the text that this {@link XSSFHeaderFooter} returns? - * Default is false, but can be changed + * Are fields currently being stripped from the text that this + * {@link XSSFHeaderFooter} returns? Default is false, but can be changed */ public boolean areFieldsStripped() { return stripFields; } + /** - * Should fields (eg macros) be stripped from - * the text that this class returns? - * Default is not to strip. + * Should fields (eg macros) be stripped from the text that this class + * returns? Default is not to strip. + * * @param stripFields */ public void setAreFieldsStripped(boolean stripFields) { @@ -138,69 +170,66 @@ public abstract class XSSFHeaderFooter implements HeaderFooter { } /** - * Removes any fields (eg macros, page markers etc) - * from the string. - * Normally used to make some text suitable for showing - * to humans, and the resultant text should not normally - * be saved back into the document! + * Removes any fields (eg macros, page markers etc) from the string. + * Normally used to make some text suitable for showing to humans, and the + * resultant text should not normally be saved back into the document! */ public static String stripFields(String text) { return org.apache.poi.hssf.usermodel.HeaderFooter.stripFields(text); } - - public abstract String getText(); - - protected abstract void setText(String text); - - /** - * get the text representing the center part of this element - */ - public String getCenter() { - String text = helper.getCenterSection(getText()); - if(stripFields) - return stripFields(text); - return text; - } - - /** - * get the text representing the left part of this element - */ - public String getLeft() { - String text = helper.getLeftSection(getText()); - if(stripFields) - return stripFields(text); - return text; - } - - /** - * get the text representing the right part of this element - */ - public String getRight() { - String text = helper.getRightSection(getText()); - if(stripFields) - return stripFields(text); - return text; - } - - /** - * set a centered string value for this element - */ - public void setCenter(String newCenter) { - setText(helper.setCenterSection(getText(), newCenter)); - } - - /** - * set a left string value for this element - */ - public void setLeft(String newLeft) { - setText(helper.setLeftSection(getText(), newLeft)); - } - - /** - * set a right string value for this element - */ - public void setRight(String newRight) { - setText(helper.setRightSection(getText(), newRight)); - } + public abstract String getText(); + + protected abstract void setText(String text); + + /** + * get the text representing the center part of this element + */ + public String getCenter() { + String text = helper.getCenterSection(getText()); + if (stripFields) + return stripFields(text); + return text; + } + + /** + * get the text representing the left part of this element + */ + public String getLeft() { + String text = helper.getLeftSection(getText()); + if (stripFields) + return stripFields(text); + return text; + } + + /** + * get the text representing the right part of this element + */ + public String getRight() { + String text = helper.getRightSection(getText()); + if (stripFields) + return stripFields(text); + return text; + } + + /** + * set a centered string value for this element + */ + public void setCenter(String newCenter) { + setText(helper.setCenterSection(getText(), newCenter)); + } + + /** + * set a left string value for this element + */ + public void setLeft(String newLeft) { + setText(helper.setLeftSection(getText(), newLeft)); + } + + /** + * set a right string value for this element + */ + public void setRight(String newRight) { + setText(helper.setRightSection(getText(), newRight)); + } } diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java index 90e7d54458..a4c813924f 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java @@ -17,7 +17,6 @@ package org.apache.poi.openxml4j.opc; -import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; @@ -37,8 +36,6 @@ import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.opc.internal.ContentTypeManager; import org.apache.poi.openxml4j.opc.internal.FileHelper; import org.apache.poi.util.TempFile; -import org.apache.poi.util.IOUtils; -import org.apache.poi.util.POILogger; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; @@ -64,19 +61,19 @@ public final class TestPackage extends TestCase { //ZipFileAssert.assertEquals(originalFile, targetFile); assertTrue(targetFile.delete()); } - + /** * Test that when we create a new Package, we give it * the correct default content types */ public void testCreateGetsContentTypes() throws Exception { File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestCreatePackageTMP.docx"); - + // Zap the target file, in case of an earlier run if(targetFile.exists()) targetFile.delete(); - + OPCPackage pkg = OPCPackage.create(targetFile); - + // Check it has content types for rels and xml ContentTypeManager ctm = getContentTypeManager(pkg); assertEquals( @@ -108,7 +105,7 @@ public final class TestPackage extends TestCase { // Zap the target file, in case of an earlier run if(targetFile.exists()) targetFile.delete(); - + // Create a package OPCPackage pkg = OPCPackage.create(targetFile); PackagePartName corePartName = PackagingURIHelper @@ -142,7 +139,7 @@ public final class TestPackage extends TestCase { //ZipFileAssert.assertEquals(expectedFile, targetFile); assertTrue(targetFile.delete()); } - + /** * Tests that we can create a new package, add a core * document and another part, save and re-load and @@ -151,7 +148,7 @@ public final class TestPackage extends TestCase { public void testCreatePackageWithCoreDocument() throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); OPCPackage pkg = OPCPackage.create(baos); - + // Add a core document PackagePartName corePartName = PackagingURIHelper.createPartName("/xl/workbook.xml"); // Create main part relationship @@ -162,7 +159,7 @@ public final class TestPackage extends TestCase { OutputStream coreOut = corePart.getOutputStream(); coreOut.write("".getBytes()); coreOut.close(); - + // And another bit PackagePartName sheetPartName = PackagingURIHelper.createPartName("/xl/worksheets/sheet1.xml"); PackageRelationship rel = @@ -184,8 +181,8 @@ public final class TestPackage extends TestCase { assertEquals("/", coreRel.getSourceURI().toString()); assertEquals("/xl/workbook.xml", coreRel.getTargetURI().toString()); assertNotNull(pkg.getPart(coreRel)); - - + + // Save and re-load pkg.close(); File tmp = TempFile.createTempFile("testCreatePackageWithCoreDocument", ".zip"); @@ -290,7 +287,7 @@ public final class TestPackage extends TestCase { //ZipFileAssert.assertEquals(expectedFile, targetFile); assertTrue(targetFile.delete()); } - + /** * Checks that we can write a package to a simple * OutputStream, in addition to the normal writing @@ -318,15 +315,15 @@ public final class TestPackage extends TestCase { */ public void testOpenFromInputStream() throws Exception { String originalFile = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCommon.docx"); - + FileInputStream finp = new FileInputStream(originalFile); - + OPCPackage p = OPCPackage.open(finp); - + assertNotNull(p); assertNotNull(p.getRelationships()); assertEquals(12, p.getParts().size()); - + // Check it has the usual bits assertTrue(p.hasRelationships()); assertTrue(p.containPart(PackagingURIHelper.createPartName("/_rels/.rels"))); @@ -407,7 +404,7 @@ public final class TestPackage extends TestCase { // Don't save modifications p.revert(); } - + public void testDeletePartRecursive() throws InvalidFormatException { TreeMap expectedValues; TreeMap values; @@ -445,7 +442,7 @@ public final class TestPackage extends TestCase { // Don't save modifications p.revert(); } - + private static ContentTypeManager getContentTypeManager(OPCPackage pkg) throws Exception { Field f = OPCPackage.class.getDeclaredField("contentTypeManager"); f.setAccessible(true); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java b/src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java index 94e8c09007..0f739f750e 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java @@ -24,7 +24,6 @@ import junit.framework.TestCase; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.PictureData; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -35,8 +34,8 @@ public class TestLoadSaveXSSF extends TestCase { String filename; - protected void setUp() throws Exception { - super.setUp(); + protected void setUp() { + System.setProperty("org.apache.poi.util.POILogger", org.apache.poi.util.CommonsLogger.class.getName()); filename = System.getProperty("XSSF.testdata.path"); if (filename == null) { @@ -52,12 +51,12 @@ public class TestLoadSaveXSSF extends TestCase { Row row = sheet.getRow(0); Cell cell = row.getCell((short) 1); assertNotNull(cell); - assertEquals(111.0, cell.getNumericCellValue()); + assertEquals(111.0, cell.getNumericCellValue(), 0.0); cell = row.getCell((short) 0); assertEquals("Lorem", cell.getRichStringCellValue().getString()); } - // TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successfull. + // TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successful. public void testLoadStyles() throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(new File(filename, "styles.xlsx").getAbsolutePath()); Sheet sheet = workbook.getSheetAt(0); @@ -67,11 +66,10 @@ public class TestLoadSaveXSSF extends TestCase { // assertNotNull(style); } - // TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successfull. + // TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successful. public void testLoadPictures() throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(new File(filename, "picture.xlsx").getAbsolutePath()); List pictures = workbook.getAllPictures(); assertEquals(1, pictures.size()); } - } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index bda438994c..ed4953b2cd 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -17,21 +17,17 @@ package org.apache.poi.xssf.usermodel; -import java.io.File; import java.util.List; -import junit.framework.TestCase; - -import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.POIXMLDocumentPart; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackagingURIHelper; -import org.apache.poi.xssf.XSSFTestDataSamples; -import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.ss.usermodel.BaseTestBugzillaIssues; -import org.apache.poi.POIXMLDocumentPart; +import org.apache.poi.xssf.XSSFITestDataProvider; +import org.apache.poi.xssf.XSSFTestDataSamples; -public class TestXSSFBugs extends BaseTestBugzillaIssues { +public final class TestXSSFBugs extends BaseTestBugzillaIssues { @Override protected XSSFITestDataProvider getTestDataProvider(){ return XSSFITestDataProvider.getInstance(); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java index 5a8b0fb3ab..95cc8ac066 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java @@ -17,29 +17,16 @@ package org.apache.poi.xssf.usermodel; -import java.util.Calendar; -import java.util.Date; -import java.util.Map; - -import junit.framework.TestCase; - -import org.apache.poi.hssf.usermodel.HSSFCell; -import org.apache.poi.hssf.usermodel.HSSFRichTextString; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.ITestDataProvider; -import org.apache.poi.xssf.XSSFTestDataSamples; +import org.apache.poi.ss.usermodel.BaseTestDataFormat; import org.apache.poi.xssf.XSSFITestDataProvider; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellType; /** * Tests for {@link XSSFDataFormat} * */ public final class TestXSSFDataFormat extends BaseTestDataFormat { - + @Override protected ITestDataProvider getTestDataProvider(){ return XSSFITestDataProvider.getInstance(); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java index bb541e54cd..288ffca69c 100755 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java @@ -17,12 +17,8 @@ package org.apache.poi.xssf.usermodel; -import junit.framework.TestCase; - import org.apache.poi.ss.usermodel.*; -import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.XSSFITestDataProvider; -import org.apache.poi.xssf.usermodel.XSSFColor; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBooleanProperty; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont; @@ -38,14 +34,14 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignRun; public final class TestXSSFFont extends BaseTestFont{ - @Override - protected XSSFITestDataProvider getTestDataProvider(){ - return XSSFITestDataProvider.getInstance(); - } + @Override + protected XSSFITestDataProvider getTestDataProvider() { + return XSSFITestDataProvider.getInstance(); + } - public void testDefaultFont() { - baseTestDefaultFont("Calibri", (short)220, IndexedColors.BLACK.getIndex()); - } + public void testDefaultFont() { + baseTestDefaultFont("Calibri", (short) 220, IndexedColors.BLACK.getIndex()); + } public void testConstructor() { XSSFFont xssfFont=new XSSFFont(); @@ -160,7 +156,7 @@ public final class TestXSSFFont extends BaseTestFont{ xssfFont.setUnderline(Font.U_DOUBLE); assertEquals(ctFont.getUArray().length,1); assertEquals(STUnderlineValues.DOUBLE,ctFont.getUArray(0).getVal()); - + xssfFont.setUnderline(FontUnderline.DOUBLE_ACCOUNTING); assertEquals(ctFont.getUArray().length,1); assertEquals(STUnderlineValues.DOUBLE_ACCOUNTING,ctFont.getUArray(0).getVal()); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java index f2e8ecddc8..230dc50af5 100755 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java @@ -17,7 +17,6 @@ package org.apache.poi.xssf.usermodel; -import junit.framework.TestCase; import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.ss.usermodel.BaseTestNamedRange; @@ -37,7 +36,7 @@ public final class TestXSSFName extends BaseTestNamedRange { // First test that setting RR&C for same sheet more than once only creates a // single Print_Titles built-in record XSSFWorkbook wb = getTestDataProvider().createWorkbook(); - XSSFSheet sheet = wb.createSheet("First Sheet"); + wb.createSheet("First Sheet"); wb.setRepeatingRowsAndColumns(0, -1, -1, -1, -1); @@ -77,7 +76,7 @@ public final class TestXSSFName extends BaseTestNamedRange { // check that setting RR&C on a second sheet causes a new Print_Titles built-in // name to be created - sheet = nwb.createSheet("SecondSheet"); + nwb.createSheet("SecondSheet"); nwb.setRepeatingRowsAndColumns(1, 1, 2, 0, 0); assertEquals(2, nwb.getNumberOfNames()); @@ -88,6 +87,4 @@ public final class TestXSSFName extends BaseTestNamedRange { nwb.setRepeatingRowsAndColumns(1, -1, -1, -1, -1); } - - } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPicture.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPicture.java index 1aa6d8e119..2437767bf1 100755 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPicture.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPicture.java @@ -17,7 +17,6 @@ package org.apache.poi.xssf.usermodel; -import junit.framework.TestCase; import org.apache.poi.ss.usermodel.ClientAnchor; import org.apache.poi.ss.usermodel.BaseTestPicture; import org.apache.poi.xssf.XSSFITestDataProvider; diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java index 1fb96061bd..06868d8376 100755 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java @@ -17,14 +17,12 @@ package org.apache.poi.xssf.usermodel; +import java.util.Arrays; +import java.util.List; + import junit.framework.TestCase; -import org.apache.poi.xssf.XSSFTestDataSamples; -import org.apache.poi.POIXMLDocumentPart; -import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTDrawing; -import java.util.List; -import java.util.Arrays; -import java.io.IOException; +import org.apache.poi.xssf.XSSFTestDataSamples; /** * @author Yegor Kozlov diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPrintSetup.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPrintSetup.java index 599aa96d20..c3cee3953b 100755 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPrintSetup.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPrintSetup.java @@ -187,13 +187,13 @@ public class TestXSSFPrintSetup extends TestCase { pMargins.setHeader(1.5); pMargins.setFooter(2); XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet); - assertEquals(1.5, printSetup.getHeaderMargin()); - assertEquals(2.0, printSetup.getFooterMargin()); + assertEquals(1.5, printSetup.getHeaderMargin(), 0.0); + assertEquals(2.0, printSetup.getFooterMargin(), 0.0); printSetup.setHeaderMargin(5); printSetup.setFooterMargin(3.5); - assertEquals(5.0, pMargins.getHeader()); - assertEquals(3.5, pMargins.getFooter()); + assertEquals(5.0, pMargins.getHeader(), 0.0); + assertEquals(3.5, pMargins.getFooter(), 0.0); } public void testSetGetCopies() { diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java index 4ae39fe217..427a56dddd 100755 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java @@ -17,23 +17,9 @@ package org.apache.poi.xssf.usermodel; -import java.io.*; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; - import junit.framework.TestCase; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.Comment; -import org.apache.poi.ss.usermodel.CreationHelper; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.model.CommentsTable; -import org.apache.xmlbeans.XmlOptions; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.*; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst; /** * Tests functionality of the XSSFRichTextRun object @@ -42,7 +28,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.*; */ public final class TestXSSFRichTextString extends TestCase { - public void testCreate() throws Exception { + public void testCreate() { XSSFRichTextString rt = new XSSFRichTextString("Apache POI"); assertEquals("Apache POI", rt.getString()); @@ -59,7 +45,7 @@ public final class TestXSSFRichTextString extends TestCase { } - public void testApplyFont() throws Exception { + public void testApplyFont() { XSSFRichTextString rt = new XSSFRichTextString(); rt.append("123"); @@ -85,7 +71,7 @@ public final class TestXSSFRichTextString extends TestCase { assertEquals(1, rt.getLengthOfFormattingRun(3)); } - public void testClearFormatting() throws Exception { + public void testClearFormatting() { XSSFRichTextString rt = new XSSFRichTextString("Apache POI"); assertEquals("Apache POI", rt.getString()); @@ -105,10 +91,9 @@ public final class TestXSSFRichTextString extends TestCase { rt.clearFormatting(); assertEquals("Apache POI", rt.getString()); assertEquals(0, rt.numFormattingRuns()); - } - public void testGetFonts() throws Exception { + public void testGetFonts() { XSSFRichTextString rt = new XSSFRichTextString(); @@ -129,6 +114,5 @@ public final class TestXSSFRichTextString extends TestCase { XSSFFont font2$ = rt.getFontOfFormattingRun(1); assertEquals(font2.getBold(), font2$.getBold()); assertEquals(font2.getFontName(), font2$.getFontName()); - } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java index 11a430a47d..5ac850e6aa 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java @@ -17,21 +17,9 @@ package org.apache.poi.xssf.usermodel; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.util.Iterator; - -import junit.framework.TestCase; - -import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.SpreadsheetVersion; -import org.apache.poi.xssf.model.SharedStringsTable; -import org.apache.poi.xssf.XSSFTestDataSamples; +import org.apache.poi.ss.usermodel.BaseTestRow; import org.apache.poi.xssf.XSSFITestDataProvider; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFRow; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.hssf.usermodel.HSSFCell; /** * Tests for XSSFRow diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java index 487c9e968c..bebfe30826 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java @@ -18,19 +18,23 @@ package org.apache.poi.xssf.usermodel; import java.io.File; -import java.util.Iterator; -import junit.framework.TestCase; -import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.usermodel.BaseTestSheet; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.CellRangeAddress; +import org.apache.poi.xssf.XSSFITestDataProvider; +import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.model.CommentsTable; import org.apache.poi.xssf.model.StylesTable; -import org.apache.poi.xssf.model.CalculationChain; import org.apache.poi.xssf.usermodel.helpers.ColumnHelper; -import org.apache.poi.xssf.XSSFTestDataSamples; -import org.apache.poi.xssf.XSSFITestDataProvider; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.*; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComments; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf; +import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPane; public class TestXSSFSheet extends BaseTestSheet { @@ -205,14 +209,14 @@ public class TestXSSFSheet extends BaseTestSheet { CTWorksheet ctWorksheet = sheet.getCTWorksheet(); sheet.createFreezePane(2, 4); - assertEquals((double) 2, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getXSplit()); + assertEquals(2.0, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getXSplit(), 0.0); assertEquals(STPane.BOTTOM_RIGHT, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getActivePane()); sheet.createFreezePane(3, 6, 10, 10); - assertEquals((double) 3, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getXSplit()); + assertEquals(3.0, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getXSplit(), 0.0); // assertEquals(10, sheet.getTopRow()); // assertEquals(10, sheet.getLeftCol()); sheet.createSplitPane(4, 8, 12, 12, 1); - assertEquals((double) 8, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getYSplit()); + assertEquals(8.0, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getYSplit(), 0.0); assertEquals(STPane.BOTTOM_RIGHT, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getActivePane()); } @@ -375,15 +379,15 @@ public class TestXSSFSheet extends BaseTestSheet { public void testSetColumnGroupCollapsed(){ Workbook wb = new XSSFWorkbook(); XSSFSheet sheet1 =(XSSFSheet) wb.createSheet(); - + CTCols cols=sheet1.getCTWorksheet().getColsArray(0); assertEquals(0,cols.sizeOfColArray()); - + sheet1.groupColumn( (short)4, (short)7 ); sheet1.groupColumn( (short)9, (short)12 ); assertEquals(2,cols.sizeOfColArray()); - + assertEquals(false,cols.getColArray(0).isSetHidden()); assertEquals(true, cols.getColArray(0).isSetCollapsed()); assertEquals(5, cols.getColArray(0).getMin()); // 1 based @@ -395,7 +399,7 @@ public class TestXSSFSheet extends BaseTestSheet { sheet1.groupColumn( (short)10, (short)11 ); assertEquals(4,cols.sizeOfColArray()); - + assertEquals(false,cols.getColArray(0).isSetHidden()); assertEquals(true, cols.getColArray(0).isSetCollapsed()); assertEquals(5, cols.getColArray(0).getMin()); // 1 based @@ -412,11 +416,11 @@ public class TestXSSFSheet extends BaseTestSheet { assertEquals(true, cols.getColArray(3).isSetCollapsed()); assertEquals(13, cols.getColArray(3).getMin()); // 1 based assertEquals(13, cols.getColArray(3).getMax()); // 1 based - + // collapse columns - 1 sheet1.setColumnGroupCollapsed( (short)5, true ); assertEquals(5,cols.sizeOfColArray()); - + assertEquals(true, cols.getColArray(0).isSetHidden()); assertEquals(true, cols.getColArray(0).isSetCollapsed()); assertEquals(5, cols.getColArray(0).getMin()); // 1 based @@ -501,7 +505,7 @@ public class TestXSSFSheet extends BaseTestSheet { //outline level 2: the line under ==> collapsed==True assertEquals(2,cols.getColArray(3).getOutlineLevel()); assertEquals(true,cols.getColArray(4).isSetCollapsed()); - + assertEquals(false,cols.getColArray(0).isSetHidden()); assertEquals(true, cols.getColArray(0).isSetCollapsed()); assertEquals(5, cols.getColArray(0).getMin()); // 1 based @@ -610,7 +614,7 @@ public class TestXSSFSheet extends BaseTestSheet { sheet1.groupRow( 7, 14 ); sheet1.groupRow( 16, 19 ); - assertEquals(14,sheet1.getPhysicalNumberOfRows()); + assertEquals(14,sheet1.getPhysicalNumberOfRows()); assertEquals(false,sheet1.getRow(6).getCTRow().isSetCollapsed()); assertEquals(false,sheet1.getRow(6).getCTRow().isSetHidden()); assertEquals(false,sheet1.getRow(7).getCTRow().isSetCollapsed()); @@ -625,7 +629,7 @@ public class TestXSSFSheet extends BaseTestSheet { assertEquals(false,sheet1.getRow(18).getCTRow().isSetHidden()); //collapsed - sheet1.setRowGroupCollapsed( 7, true ); + sheet1.setRowGroupCollapsed( 7, true ); assertEquals(false,sheet1.getRow(6).getCTRow().isSetCollapsed()); assertEquals(false,sheet1.getRow(6).getCTRow().isSetHidden()); @@ -698,7 +702,7 @@ public class TestXSSFSheet extends BaseTestSheet { // XML is 1 based, POI is 0 based assertEquals(2, col.getMin()); assertEquals(2, col.getMax()); - assertEquals(22.0, col.getWidth()); + assertEquals(22.0, col.getWidth(), 0.0); // Now set another sheet.setColumnWidth(3, 33 * 256); @@ -711,12 +715,11 @@ public class TestXSSFSheet extends BaseTestSheet { col = cols.getColArray(0); assertEquals(2, col.getMin()); // POI 1 assertEquals(2, col.getMax()); - assertEquals(22.0, col.getWidth()); + assertEquals(22.0, col.getWidth(), 0.0); col = cols.getColArray(1); assertEquals(4, col.getMin()); // POI 3 assertEquals(4, col.getMax()); - assertEquals(33.0, col.getWidth()); + assertEquals(33.0, col.getWidth(), 0.0); } - } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java index e2dbb27fa5..3014bcf904 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java @@ -20,31 +20,26 @@ package org.apache.poi.xssf.usermodel; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; -import java.util.zip.CRC32; import java.util.List; +import java.util.zip.CRC32; -import junit.framework.TestCase; - +import org.apache.poi.POIXMLProperties; import org.apache.poi.hssf.HSSFTestDataSamples; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.XSSFTestDataSamples; -import org.apache.poi.xssf.XSSFITestDataProvider; -import org.apache.poi.xssf.model.StylesTable; import org.apache.poi.openxml4j.opc.*; import org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart; +import org.apache.poi.ss.usermodel.*; import org.apache.poi.util.TempFile; -import org.apache.poi.POIXMLProperties; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook; +import org.apache.poi.xssf.XSSFITestDataProvider; +import org.apache.poi.xssf.XSSFTestDataSamples; +import org.apache.poi.xssf.model.StylesTable; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbookPr; public final class TestXSSFWorkbook extends BaseTestWorkbook { - @Override - protected XSSFITestDataProvider getTestDataProvider(){ - return XSSFITestDataProvider.getInstance(); - } + @Override + protected XSSFITestDataProvider getTestDataProvider(){ + return XSSFITestDataProvider.getInstance(); + } /** @@ -53,94 +48,94 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook { public void testSaveLoadNew() throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(); - //check that the default date system is set to 1900 - CTWorkbookPr pr = workbook.getCTWorkbook().getWorkbookPr(); - assertNotNull(pr); - assertTrue(pr.isSetDate1904()); - assertFalse("XSSF must use the 1900 date system", pr.getDate1904()); + //check that the default date system is set to 1900 + CTWorkbookPr pr = workbook.getCTWorkbook().getWorkbookPr(); + assertNotNull(pr); + assertTrue(pr.isSetDate1904()); + assertFalse("XSSF must use the 1900 date system", pr.getDate1904()); - Sheet sheet1 = workbook.createSheet("sheet1"); + Sheet sheet1 = workbook.createSheet("sheet1"); Sheet sheet2 = workbook.createSheet("sheet2"); workbook.createSheet("sheet3"); - + RichTextString rts = workbook.getCreationHelper().createRichTextString("hello world"); - + sheet1.createRow(0).createCell((short)0).setCellValue(1.2); sheet1.createRow(1).createCell((short)0).setCellValue(rts); sheet2.createRow(0); - + assertEquals(0, workbook.getSheetAt(0).getFirstRowNum()); assertEquals(1, workbook.getSheetAt(0).getLastRowNum()); assertEquals(0, workbook.getSheetAt(1).getFirstRowNum()); assertEquals(0, workbook.getSheetAt(1).getLastRowNum()); assertEquals(0, workbook.getSheetAt(2).getFirstRowNum()); assertEquals(0, workbook.getSheetAt(2).getLastRowNum()); - + File file = TempFile.createTempFile("poi-", ".xlsx"); OutputStream out = new FileOutputStream(file); workbook.write(out); out.close(); - + // Check the package contains what we'd expect it to OPCPackage pkg = OPCPackage.open(file.toString()); - PackagePart wbRelPart = + PackagePart wbRelPart = pkg.getPart(PackagingURIHelper.createPartName("/xl/_rels/workbook.xml.rels")); assertNotNull(wbRelPart); assertTrue(wbRelPart.isRelationshipPart()); assertEquals(ContentTypes.RELATIONSHIPS_PART, wbRelPart.getContentType()); - - PackagePart wbPart = + + PackagePart wbPart = pkg.getPart(PackagingURIHelper.createPartName("/xl/workbook.xml")); // Links to the three sheets, shared strings and styles assertTrue(wbPart.hasRelationships()); assertEquals(5, wbPart.getRelationships().size()); - + // Load back the XSSFWorkbook workbook = new XSSFWorkbook(pkg); assertEquals(3, workbook.getNumberOfSheets()); assertNotNull(workbook.getSheetAt(0)); assertNotNull(workbook.getSheetAt(1)); assertNotNull(workbook.getSheetAt(2)); - + assertNotNull(workbook.getSharedStringSource()); assertNotNull(workbook.getStylesSource()); - + assertEquals(0, workbook.getSheetAt(0).getFirstRowNum()); assertEquals(1, workbook.getSheetAt(0).getLastRowNum()); assertEquals(0, workbook.getSheetAt(1).getFirstRowNum()); assertEquals(0, workbook.getSheetAt(1).getLastRowNum()); assertEquals(0, workbook.getSheetAt(2).getFirstRowNum()); assertEquals(0, workbook.getSheetAt(2).getLastRowNum()); - + sheet1 = workbook.getSheetAt(0); assertEquals(1.2, sheet1.getRow(0).getCell(0).getNumericCellValue(), 0.0001); assertEquals("hello world", sheet1.getRow(1).getCell(0).getRichStringCellValue().getString()); } - + public void testExisting() throws Exception { - + XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx"); assertNotNull(workbook.getSharedStringSource()); assertNotNull(workbook.getStylesSource()); - + // And check a few low level bits too OPCPackage pkg = OPCPackage.open(HSSFTestDataSamples.openSampleFileStream("Formatting.xlsx")); - PackagePart wbPart = + PackagePart wbPart = pkg.getPart(PackagingURIHelper.createPartName("/xl/workbook.xml")); - + // Links to the three sheets, shared, styles and themes assertTrue(wbPart.hasRelationships()); assertEquals(6, wbPart.getRelationships().size()); } - + public void testGetCellStyleAt(){ XSSFWorkbook workbook = new XSSFWorkbook(); short i = 0; //get default style CellStyle cellStyleAt = workbook.getCellStyleAt(i); assertNotNull(cellStyleAt); - + //get custom style StylesTable styleSource = workbook.getStylesSource(); XSSFCellStyle customStyle = new XSSFCellStyle(styleSource); @@ -149,9 +144,9 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook { customStyle.setFont(font); int x = styleSource.putStyle(customStyle); cellStyleAt = workbook.getCellStyleAt((short)x); - assertNotNull(cellStyleAt); + assertNotNull(cellStyleAt); } - + public void testGetFontAt(){ XSSFWorkbook workbook = new XSSFWorkbook(); StylesTable styleSource = workbook.getStylesSource(); @@ -159,7 +154,7 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook { //get default font Font fontAt = workbook.getFontAt(i); assertNotNull(fontAt); - + //get customized font XSSFFont customFont = new XSSFFont(); customFont.setItalic(true); @@ -167,23 +162,23 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook { fontAt = workbook.getFontAt((short)x); assertNotNull(fontAt); } - + public void testGetNumCellStyles(){ XSSFWorkbook workbook = new XSSFWorkbook(); short i = workbook.getNumCellStyles(); //get default cellStyles assertEquals(1, i); //get wrong value - assertNotSame(2, i); + assertNotSame(2, i); } - + public void testLoadSave() { XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx"); assertEquals(3, workbook.getNumberOfSheets()); assertEquals("dd/mm/yyyy", workbook.getSheetAt(0).getRow(1).getCell(0).getRichStringCellValue().getString()); assertNotNull(workbook.getSharedStringSource()); assertNotNull(workbook.getStylesSource()); - + // Write out, and check // Load up again, check all still there XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(workbook); @@ -191,7 +186,7 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook { assertNotNull(wb2.getSheetAt(0)); assertNotNull(wb2.getSheetAt(1)); assertNotNull(wb2.getSheetAt(2)); - + assertEquals("dd/mm/yyyy", wb2.getSheetAt(0).getRow(1).getCell(0).getRichStringCellValue().getString()); assertEquals("yyyy/mm/dd", wb2.getSheetAt(0).getRow(2).getCell(0).getRichStringCellValue().getString()); assertEquals("yyyy-mm-dd", wb2.getSheetAt(0).getRow(3).getCell(0).getRichStringCellValue().getString()); @@ -199,14 +194,14 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook { assertNotNull(wb2.getSharedStringSource()); assertNotNull(wb2.getStylesSource()); } - + public void testStyles() { XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx"); - + StylesTable ss = workbook.getStylesSource(); assertNotNull(ss); StylesTable st = ss; - + // Has 8 number formats assertEquals(8, st._getNumberFormatSize()); // Has 2 fonts @@ -215,20 +210,20 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook { assertEquals(2, st.getFills().size()); // Has 1 border assertEquals(1, st.getBorders().size()); - + // Add two more styles - assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8, + assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8, st.putNumberFormat("testFORMAT")); - assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8, + assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8, st.putNumberFormat("testFORMAT")); - assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 9, + assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 9, st.putNumberFormat("testFORMAT2")); assertEquals(10, st._getNumberFormatSize()); - - + + // Save, load back in again, and check workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook); - + ss = workbook.getStylesSource(); assertNotNull(ss); @@ -238,77 +233,77 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook { assertEquals(1, st.getBorders().size()); } - public void testIncrementSheetId() throws Exception { - XSSFWorkbook wb = getTestDataProvider().createWorkbook(); - int sheetId = (int)wb.createSheet().sheet.getSheetId(); - assertEquals(1, sheetId); - sheetId = (int)wb.createSheet().sheet.getSheetId(); - assertEquals(2, sheetId); - - //test file with gaps in the sheetId sequence - wb = getTestDataProvider().openSampleWorkbook("47089.xlsm"); - int lastSheetId = (int)wb.getSheetAt(wb.getNumberOfSheets() - 1).sheet.getSheetId(); - sheetId = (int)wb.createSheet().sheet.getSheetId(); - assertEquals(lastSheetId+1, sheetId); - } - - /** - * Test setting of core properties such as Title and Author - */ - public void testWorkbookProperties() throws Exception { - XSSFWorkbook workbook = new XSSFWorkbook(); - POIXMLProperties props = workbook.getProperties(); - assertNotNull(props); - //the Application property must be set for new workbooks, see Bugzilla #47559 - assertEquals("Apache POI", props.getExtendedProperties().getUnderlyingProperties().getApplication()); - - PackagePropertiesPart opcProps = props.getCoreProperties().getUnderlyingProperties(); - assertNotNull(opcProps); - - opcProps.setTitleProperty("Testing Bugzilla #47460"); - assertEquals("Apache POI", opcProps.getCreatorProperty().getValue()); - opcProps.setCreatorProperty("poi-dev@poi.apache.org"); - - workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook); - assertEquals("Apache POI", workbook.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication()); - opcProps = workbook.getProperties().getCoreProperties().getUnderlyingProperties(); - assertEquals("Testing Bugzilla #47460", opcProps.getTitleProperty().getValue()); - assertEquals("poi-dev@poi.apache.org", opcProps.getCreatorProperty().getValue()); - } - - /** - * Verify that the attached test data was not modified. If this test method - * fails, the test data is not working properly. - */ - public void test47668() throws Exception { - XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("47668.xlsx"); - List allPictures = workbook.getAllPictures(); - assertEquals(2, allPictures.size()); - - PackagePartName imagePartName = PackagingURIHelper - .createPartName("/xl/media/image1.jpeg"); - PackagePart imagePart = workbook.getPackage().getPart(imagePartName); - assertNotNull(imagePart); - - for (XSSFPictureData pictureData : allPictures) { - PackagePart picturePart = pictureData.getPackagePart(); - assertSame(imagePart, picturePart); - } - - XSSFSheet sheet0 = workbook.getSheetAt(0); - XSSFDrawing drawing0 = sheet0.createDrawingPatriarch(); - XSSFPictureData pictureData0 = (XSSFPictureData) drawing0.getRelations().get(0); - byte[] data0 = pictureData0.getData(); - CRC32 crc0 = new CRC32(); - crc0.update(data0); - - XSSFSheet sheet1 = workbook.getSheetAt(1); - XSSFDrawing drawing1 = sheet1.createDrawingPatriarch(); - XSSFPictureData pictureData1 = (XSSFPictureData) drawing1.getRelations().get(0); - byte[] data1 = pictureData1.getData(); - CRC32 crc1 = new CRC32(); - crc1.update(data1); - - assertEquals(crc0.getValue(), crc1.getValue()); - } + public void testIncrementSheetId() { + XSSFWorkbook wb = getTestDataProvider().createWorkbook(); + int sheetId = (int)wb.createSheet().sheet.getSheetId(); + assertEquals(1, sheetId); + sheetId = (int)wb.createSheet().sheet.getSheetId(); + assertEquals(2, sheetId); + + //test file with gaps in the sheetId sequence + wb = getTestDataProvider().openSampleWorkbook("47089.xlsm"); + int lastSheetId = (int)wb.getSheetAt(wb.getNumberOfSheets() - 1).sheet.getSheetId(); + sheetId = (int)wb.createSheet().sheet.getSheetId(); + assertEquals(lastSheetId+1, sheetId); + } + + /** + * Test setting of core properties such as Title and Author + */ + public void testWorkbookProperties() { + XSSFWorkbook workbook = new XSSFWorkbook(); + POIXMLProperties props = workbook.getProperties(); + assertNotNull(props); + //the Application property must be set for new workbooks, see Bugzilla #47559 + assertEquals("Apache POI", props.getExtendedProperties().getUnderlyingProperties().getApplication()); + + PackagePropertiesPart opcProps = props.getCoreProperties().getUnderlyingProperties(); + assertNotNull(opcProps); + + opcProps.setTitleProperty("Testing Bugzilla #47460"); + assertEquals("Apache POI", opcProps.getCreatorProperty().getValue()); + opcProps.setCreatorProperty("poi-dev@poi.apache.org"); + + workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook); + assertEquals("Apache POI", workbook.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication()); + opcProps = workbook.getProperties().getCoreProperties().getUnderlyingProperties(); + assertEquals("Testing Bugzilla #47460", opcProps.getTitleProperty().getValue()); + assertEquals("poi-dev@poi.apache.org", opcProps.getCreatorProperty().getValue()); + } + + /** + * Verify that the attached test data was not modified. If this test method + * fails, the test data is not working properly. + */ + public void test47668() throws Exception { + XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("47668.xlsx"); + List allPictures = workbook.getAllPictures(); + assertEquals(2, allPictures.size()); + + PackagePartName imagePartName = PackagingURIHelper + .createPartName("/xl/media/image1.jpeg"); + PackagePart imagePart = workbook.getPackage().getPart(imagePartName); + assertNotNull(imagePart); + + for (XSSFPictureData pictureData : allPictures) { + PackagePart picturePart = pictureData.getPackagePart(); + assertSame(imagePart, picturePart); + } + + XSSFSheet sheet0 = workbook.getSheetAt(0); + XSSFDrawing drawing0 = sheet0.createDrawingPatriarch(); + XSSFPictureData pictureData0 = (XSSFPictureData) drawing0.getRelations().get(0); + byte[] data0 = pictureData0.getData(); + CRC32 crc0 = new CRC32(); + crc0.update(data0); + + XSSFSheet sheet1 = workbook.getSheetAt(1); + XSSFDrawing drawing1 = sheet1.createDrawingPatriarch(); + XSSFPictureData pictureData1 = (XSSFPictureData) drawing1.getRelations().get(0); + byte[] data1 = pictureData1.getData(); + CRC32 crc1 = new CRC32(); + crc1.update(data1); + + assertEquals(crc0.getValue(), crc1.getValue()); + } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/util/TestCTColComparator.java b/src/ooxml/testcases/org/apache/poi/xssf/util/TestCTColComparator.java index 099d268ab0..64f43c4a75 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/util/TestCTColComparator.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/util/TestCTColComparator.java @@ -22,11 +22,10 @@ import java.util.Arrays; import junit.framework.TestCase; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol; -import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols; -public class TestCTColComparator extends TestCase { - +public final class TestCTColComparator extends TestCase { + public void testCompare() { CTColComparator comparator = new CTColComparator(); CTCol o1 = CTCol.Factory.newInstance(); @@ -44,7 +43,7 @@ public class TestCTColComparator extends TestCase { o4.setMax(80); assertEquals(-1, comparator.compare(o3, o4)); } - + public void testArraysSort() { CTColComparator comparator = new CTColComparator(); CTCol o1 = CTCol.Factory.newInstance(); @@ -73,5 +72,4 @@ public class TestCTColComparator extends TestCase { assertEquals(8, cols[1].getMax()); assertEquals(80, cols[2].getMax()); } - } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java index e7e90c447e..f02135afac 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java @@ -21,7 +21,7 @@ import java.math.BigInteger; import junit.framework.TestCase; -import org.openxmlformats.schemas.officeDocument.x2006.math.STSpacingRule; +import org.apache.poi.POIXMLDocument; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc; @@ -40,29 +40,27 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTextAlignment; /** * Tests for XWPF Paragraphs */ -public class TestXWPFParagraph extends TestCase { +public final class TestXWPFParagraph extends TestCase { /** * A simple file */ private XWPFDocument xml; - private File file; -/* + protected void setUp() throws Exception { super.setUp(); - file = new File( + File file = new File( System.getProperty("HWPF.testdata.path") + File.separator + "ThreeColHead.docx" ); assertTrue(file.exists()); xml = new XWPFDocument(POIXMLDocument.openPackage(file.toString())); } -*/ + /** * Check that we get the right paragraph from the header */ - /* - public void testHeaderParagraph() throws Exception { + public void disabled_testHeaderParagraph() { XWPFHeader hdr = xml.getHeaderFooterPolicy().getDefaultHeader(); assertNotNull(hdr); @@ -74,12 +72,11 @@ public class TestXWPFParagraph extends TestCase { assertEquals("First header column!\tMid header\tRight header!", p .getText()); } -*/ + /** * Check that we get the right paragraphs from the document */ - /* - public void testDocumentParagraph() throws Exception { + public void disabled_testDocumentParagraph() { XWPFParagraph[] ps = xml.getParagraphs(); assertEquals(10, ps.length); @@ -100,23 +97,23 @@ public class TestXWPFParagraph extends TestCase { assertFalse(ps[4].isEmpty()); assertEquals("More on page one", ps[4].getText()); } -*/ + public void testSetGetBorderTop() { //new clean instance of paragraph XWPFDocument doc = new XWPFDocument(); XWPFParagraph p = doc.createParagraph(); assertEquals(STBorder.NONE.intValue(), p.getBorderTop().getValue()); - + CTP ctp = p.getCTP(); CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); - + //bordi CTPBdr bdr = ppr.addNewPBdr(); CTBorder borderTop = bdr.addNewTop(); borderTop.setVal(STBorder.DOUBLE); bdr.setTop(borderTop); - + assertEquals(Borders.DOUBLE, p.getBorderTop()); p.setBorderTop(Borders.SINGLE); assertEquals(STBorder.SINGLE, borderTop.getVal()); @@ -128,7 +125,7 @@ public class TestXWPFParagraph extends TestCase { XWPFParagraph p = doc.createParagraph(); assertEquals(STJc.LEFT.intValue(), p.getAlignment().getValue()); - + CTP ctp = p.getCTP(); CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); @@ -140,7 +137,7 @@ public class TestXWPFParagraph extends TestCase { assertEquals(STJc.BOTH, ppr.getJc().getVal()); } - + public void testSetGetSpacing() { XWPFDocument doc = new XWPFDocument(); XWPFParagraph p = doc.createParagraph(); @@ -149,7 +146,7 @@ public class TestXWPFParagraph extends TestCase { CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); assertEquals(-1, p.getSpacingAfter()); - + CTSpacing spacing = ppr.addNewSpacing(); spacing.setAfter(new BigInteger("10")); assertEquals(10, p.getSpacingAfter()); @@ -166,7 +163,7 @@ public class TestXWPFParagraph extends TestCase { CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); assertEquals(STLineSpacingRule.INT_AUTO, p.getSpacingLineRule().getValue()); - + CTSpacing spacing = ppr.addNewSpacing(); spacing.setLineRule(STLineSpacingRule.AT_LEAST); assertEquals(LineSpacingRule.AT_LEAST, p.getSpacingLineRule()); @@ -174,18 +171,18 @@ public class TestXWPFParagraph extends TestCase { p.setSpacingAfter(100); assertEquals(100, spacing.getAfter().intValue()); } - + public void testSetGetIndentation() { XWPFDocument doc = new XWPFDocument(); XWPFParagraph p = doc.createParagraph(); assertEquals(-1, p.getIndentationLeft()); - + CTP ctp = p.getCTP(); CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr(); assertEquals(-1, p.getIndentationLeft()); - + CTInd ind = ppr.addNewInd(); ind.setLeft(new BigInteger("10")); assertEquals(10, p.getIndentationLeft()); @@ -193,7 +190,7 @@ public class TestXWPFParagraph extends TestCase { p.setIndentationLeft(100); assertEquals(100, ind.getLeft().intValue()); } - + public void testSetGetVerticalAlignment() { //new clean instance of paragraph XWPFDocument doc = new XWPFDocument(); @@ -240,6 +237,4 @@ public class TestXWPFParagraph extends TestCase { p.setPageBreak(true); assertEquals(STOnOff.TRUE, ppr.getPageBreakBefore().getVal()); } - - } diff --git a/src/scratchpad/src/org/apache/poi/hdf/extractor/StyleSheet.java b/src/scratchpad/src/org/apache/poi/hdf/extractor/StyleSheet.java index 751b03666f..9dc5925e9a 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/extractor/StyleSheet.java +++ b/src/scratchpad/src/org/apache/poi/hdf/extractor/StyleSheet.java @@ -17,16 +17,12 @@ package org.apache.poi.hdf.extractor; -import java.util.*; - /** * Comment me * * @author Ryan Ackley */ - -public final class StyleSheet -{ +public final class StyleSheet { private static final int NIL_STYLE = 4095; private static final int PAP_TYPE = 1; diff --git a/src/scratchpad/src/org/apache/poi/hdf/model/HDFObjectFactory.java b/src/scratchpad/src/org/apache/poi/hdf/model/HDFObjectFactory.java index f08bd0deb0..1b61045d71 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/model/HDFObjectFactory.java +++ b/src/scratchpad/src/org/apache/poi/hdf/model/HDFObjectFactory.java @@ -17,37 +17,25 @@ package org.apache.poi.hdf.model; - -//import java.io; - -import java.util.ArrayList; -import java.io.InputStream; import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; import java.util.List; -import java.util.TreeSet; - -import org.apache.poi.hdf.model.hdftypes.*; import org.apache.poi.hdf.event.HDFLowLevelParsingListener; -import org.apache.poi.hdf.model.util.BTreeSet; +import org.apache.poi.hdf.model.hdftypes.*; import org.apache.poi.hdf.model.util.ParsingState; - -import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.apache.poi.poifs.filesystem.POIFSDocument; import org.apache.poi.poifs.filesystem.DocumentEntry; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.LittleEndian; - - - /** * The Object Factory takes in a stream and creates the low level objects * that represent the data. * @author andy */ -public final class HDFObjectFactory -{ +public final class HDFObjectFactory { /** OLE stuff*/ private POIFSFileSystem _filesystem; @@ -193,36 +181,26 @@ public final class HDFObjectFactory { throw new IOException("The text piece table is corrupted"); } - else - { - //parse out the text pieces - int pieceTableSize = LittleEndian.getInt(_tableBuffer, ++pos); - pos += 4; - int pieces = (pieceTableSize - 4) / 12; - for (int x = 0; x < pieces; x++) - { - int filePos = LittleEndian.getInt(_tableBuffer, pos + ((pieces + 1) * 4) + (x * 8) + 2); - boolean unicode = false; - if ((filePos & 0x40000000) == 0) - { - unicode = true; - } - else - { - unicode = false; - filePos &= ~(0x40000000);//gives me FC in doc stream - filePos /= 2; - } - int totLength = LittleEndian.getInt(_tableBuffer, pos + (x + 1) * 4) - - LittleEndian.getInt(_tableBuffer, pos + (x * 4)); - - TextPiece piece = new TextPiece(filePos, totLength, unicode); - _listener.text(piece); - + //parse out the text pieces + int pieceTableSize = LittleEndian.getInt(_tableBuffer, ++pos); + pos += 4; + int pieces = (pieceTableSize - 4) / 12; + for (int x = 0; x < pieces; x++) { + int filePos = LittleEndian.getInt(_tableBuffer, pos + ((pieces + 1) * 4) + (x * 8) + 2); + boolean unicode = false; + if ((filePos & 0x40000000) == 0) { + unicode = true; + } else { + unicode = false; + filePos &= ~(0x40000000);//gives me FC in doc stream + filePos /= 2; } + int totLength = LittleEndian.getInt(_tableBuffer, pos + (x + 1) * 4) - + LittleEndian.getInt(_tableBuffer, pos + (x * 4)); + TextPiece piece = new TextPiece(filePos, totLength, unicode); + _listener.text(piece); } - } /** * initializes all of the formatting properties for a Word Document @@ -532,10 +510,7 @@ public final class HDFObjectFactory { break; } - else - { - x++; - } + x++; } //do the header sections for (; x < arraySize; x++)// && sectionEnd <= end; x++) diff --git a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/FileInformationBlock.java b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/FileInformationBlock.java index 23409b5478..bd3bfb326b 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/FileInformationBlock.java +++ b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/FileInformationBlock.java @@ -17,9 +17,6 @@ package org.apache.poi.hdf.model.hdftypes; -import org.apache.poi.util.BitField; -import org.apache.poi.util.LittleEndian; - import org.apache.poi.hdf.model.hdftypes.definitions.FIBAbstractType; diff --git a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/StyleSheet.java b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/StyleSheet.java index 99607f837c..1bee95245a 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/StyleSheet.java +++ b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/StyleSheet.java @@ -17,7 +17,6 @@ package org.apache.poi.hdf.model.hdftypes; -import java.util.*; import org.apache.poi.util.LittleEndian; import org.apache.poi.hdf.model.hdftypes.definitions.TCAbstractType; @@ -29,9 +28,7 @@ import org.apache.poi.hdf.model.hdftypes.definitions.TCAbstractType; * * @author Ryan Ackley */ - -public final class StyleSheet implements HDFType -{ +public final class StyleSheet implements HDFType { private static final int NIL_STYLE = 4095; private static final int PAP_TYPE = 1; diff --git a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/CHPAbstractType.java b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/CHPAbstractType.java index d49c46f85f..12d5fd2ce3 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/CHPAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/CHPAbstractType.java @@ -18,12 +18,8 @@ package org.apache.poi.hdf.model.hdftypes.definitions; - import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; import org.apache.poi.hdf.model.hdftypes.HDFType; /** diff --git a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/DOPAbstractType.java b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/DOPAbstractType.java index 0853175e47..289300029d 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/DOPAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/DOPAbstractType.java @@ -22,7 +22,6 @@ package org.apache.poi.hdf.model.hdftypes.definitions; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; import org.apache.poi.util.HexDump; import org.apache.poi.hdf.model.hdftypes.HDFType; diff --git a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/FIBAbstractType.java b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/FIBAbstractType.java index 6a0f92025b..f60221eeea 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/FIBAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/FIBAbstractType.java @@ -18,11 +18,9 @@ package org.apache.poi.hdf.model.hdftypes.definitions; - import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; import org.apache.poi.util.HexDump; import org.apache.poi.hdf.model.hdftypes.HDFType; diff --git a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/PAPAbstractType.java b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/PAPAbstractType.java index f0bb7b8569..0d825e49fd 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/PAPAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/PAPAbstractType.java @@ -18,12 +18,8 @@ package org.apache.poi.hdf.model.hdftypes.definitions; - import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; import org.apache.poi.hdf.model.hdftypes.HDFType; /** diff --git a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/SEPAbstractType.java b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/SEPAbstractType.java index 3de980e7d5..e790f8d3bd 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/SEPAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/SEPAbstractType.java @@ -18,11 +18,6 @@ package org.apache.poi.hdf.model.hdftypes.definitions; - -import org.apache.poi.util.BitField; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; import org.apache.poi.hdf.model.hdftypes.HDFType; /** diff --git a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TAPAbstractType.java b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TAPAbstractType.java index d7d1896270..512dd37614 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TAPAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TAPAbstractType.java @@ -17,12 +17,6 @@ package org.apache.poi.hdf.model.hdftypes.definitions; - - -import org.apache.poi.util.BitField; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; import org.apache.poi.hdf.model.hdftypes.HDFType; /** diff --git a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TCAbstractType.java b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TCAbstractType.java index 014958afc3..a365d65e53 100644 --- a/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TCAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TCAbstractType.java @@ -17,13 +17,8 @@ package org.apache.poi.hdf.model.hdftypes.definitions; - - import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; import org.apache.poi.hdf.model.hdftypes.HDFType; /** diff --git a/src/scratchpad/src/org/apache/poi/hslf/EncryptedSlideShow.java b/src/scratchpad/src/org/apache/poi/hslf/EncryptedSlideShow.java index 05d85fe6e0..c5e01646a8 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/EncryptedSlideShow.java +++ b/src/scratchpad/src/org/apache/poi/hslf/EncryptedSlideShow.java @@ -26,9 +26,6 @@ import org.apache.poi.hslf.record.PersistPtrHolder; import org.apache.poi.hslf.record.Record; import org.apache.poi.hslf.record.UserEditAtom; import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.apache.poi.poifs.filesystem.DocumentEntry; -import org.apache.poi.poifs.filesystem.DocumentInputStream; -import org.apache.poi.util.LittleEndian; /** * This class provides helper functions for determining if a @@ -95,7 +92,9 @@ public final class EncryptedSlideShow hss.getUnderlyingBytes(), (int)cua.getCurrentEditOffset() ); - } catch(ArrayIndexOutOfBoundsException e) {} + } catch (ArrayIndexOutOfBoundsException e) { + return null; + } if(r == null) { return null; } if(! (r instanceof UserEditAtom)) { return null; } UserEditAtom uea = (UserEditAtom)r; diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/EMF.java b/src/scratchpad/src/org/apache/poi/hslf/blip/EMF.java index 1f1b13370a..182e96a44e 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/EMF.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/EMF.java @@ -26,7 +26,6 @@ import java.io.InputStream; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.zip.InflaterInputStream; -import java.util.zip.DeflaterOutputStream; /** * Represents EMF (Windows Enhanced Metafile) picture data. diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/Metafile.java b/src/scratchpad/src/org/apache/poi/hslf/blip/Metafile.java index 8a4d5aeb81..c05d19acb0 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/Metafile.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/Metafile.java @@ -23,7 +23,6 @@ import org.apache.poi.hslf.usermodel.PictureData; import java.awt.*; import java.io.*; import java.util.zip.DeflaterOutputStream; -import java.util.zip.InflaterInputStream; /** * Represents a metafile picture which can be one of the following types: EMF, WMF, or PICT. diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/PICT.java b/src/scratchpad/src/org/apache/poi/hslf/blip/PICT.java index 5fe6bccec9..0796db8555 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/PICT.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/PICT.java @@ -17,14 +17,14 @@ package org.apache.poi.hslf.blip; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.zip.InflaterInputStream; + +import org.apache.poi.hslf.exceptions.HSLFException; import org.apache.poi.hslf.model.Picture; import org.apache.poi.hslf.model.Shape; -import org.apache.poi.hslf.exceptions.HSLFException; -import org.apache.poi.util.LittleEndian; - -import java.io.*; -import java.util.zip.InflaterInputStream; -import java.util.zip.DeflaterOutputStream; /** * Represents Macintosh PICT picture data. diff --git a/src/scratchpad/src/org/apache/poi/hslf/blip/WMF.java b/src/scratchpad/src/org/apache/poi/hslf/blip/WMF.java index acc74276ad..4400c95594 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/blip/WMF.java +++ b/src/scratchpad/src/org/apache/poi/hslf/blip/WMF.java @@ -25,7 +25,6 @@ import org.apache.poi.hslf.exceptions.HSLFException; import java.io.*; import java.util.zip.InflaterInputStream; -import java.util.zip.DeflaterOutputStream; /** * Represents a WMF (Windows Metafile) picture data. diff --git a/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowDumper.java b/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowDumper.java index 3000163275..d9c1a2ae91 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowDumper.java +++ b/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowDumper.java @@ -17,11 +17,9 @@ package org.apache.poi.hslf.dev; -import java.util.*; import java.io.*; import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.apache.poi.poifs.filesystem.POIFSDocument; import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.ddf.*; diff --git a/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java b/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java index 87662adeda..f2e7b36dc2 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java +++ b/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java @@ -33,7 +33,6 @@ import org.apache.poi.hslf.record.EscherTextboxWrapper; import org.apache.poi.hslf.record.TextCharsAtom; import org.apache.poi.hslf.record.TextBytesAtom; import org.apache.poi.hslf.record.StyleTextPropAtom; -import org.apache.poi.hslf.record.Record; /** * This class provides a way to view the contents of a powerpoint file. diff --git a/src/scratchpad/src/org/apache/poi/hslf/dev/TextStyleListing.java b/src/scratchpad/src/org/apache/poi/hslf/dev/TextStyleListing.java index 0ee4fbd0df..a919f61cdd 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/dev/TextStyleListing.java +++ b/src/scratchpad/src/org/apache/poi/hslf/dev/TextStyleListing.java @@ -22,7 +22,6 @@ import org.apache.poi.hslf.model.textproperties.BitMaskTextProp; import org.apache.poi.hslf.model.textproperties.TextProp; import org.apache.poi.hslf.model.textproperties.TextPropCollection; import org.apache.poi.hslf.record.*; -import org.apache.poi.hslf.record.StyleTextPropAtom.*; import java.util.LinkedList; diff --git a/src/scratchpad/src/org/apache/poi/hslf/dev/UserEditAndPersistListing.java b/src/scratchpad/src/org/apache/poi/hslf/dev/UserEditAndPersistListing.java index 73fd29604d..2d93a0678a 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/dev/UserEditAndPersistListing.java +++ b/src/scratchpad/src/org/apache/poi/hslf/dev/UserEditAndPersistListing.java @@ -17,18 +17,13 @@ package org.apache.poi.hslf.dev; -import org.apache.poi.hslf.*; -import org.apache.poi.hslf.record.*; +import java.io.ByteArrayOutputStream; +import java.util.Hashtable; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.apache.poi.poifs.filesystem.POIFSDocument; -import org.apache.poi.poifs.filesystem.DocumentEntry; -import org.apache.poi.poifs.filesystem.DocumentInputStream; +import org.apache.poi.hslf.HSLFSlideShow; +import org.apache.poi.hslf.record.*; import org.apache.poi.util.LittleEndian; -import java.io.*; -import java.util.Hashtable; - /** * Uses record level code to locate UserEditAtom records, and other * persistence related atoms. Tries to match them together, to help diff --git a/src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java b/src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java index 9dfa6ce9d0..b2182edcd6 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java +++ b/src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java @@ -21,9 +21,7 @@ import java.io.*; import java.util.Vector; import org.apache.poi.poifs.filesystem.POIFSFileSystem; -import org.apache.poi.poifs.filesystem.POIFSDocument; import org.apache.poi.poifs.filesystem.DocumentEntry; -import org.apache.poi.poifs.filesystem.DocumentInputStream; import org.apache.poi.util.LittleEndian; import org.apache.poi.hslf.record.CString; diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Freeform.java b/src/scratchpad/src/org/apache/poi/hslf/model/Freeform.java index 545ffdffe1..302415068b 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Freeform.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Freeform.java @@ -20,7 +20,6 @@ package org.apache.poi.hslf.model; import org.apache.poi.ddf.*; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.POILogger; -import org.apache.poi.util.HexDump; import java.awt.geom.*; import java.util.ArrayList; diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/MasterSheet.java b/src/scratchpad/src/org/apache/poi/hslf/model/MasterSheet.java index f3968448c4..c3cfaba90f 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/MasterSheet.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/MasterSheet.java @@ -18,9 +18,6 @@ package org.apache.poi.hslf.model; import org.apache.poi.hslf.record.SheetContainer; -import org.apache.poi.hslf.record.Record; -import org.apache.poi.hslf.record.RecordTypes; -import org.apache.poi.hslf.record.OEPlaceholderAtom; import org.apache.poi.hslf.model.textproperties.TextProp; /** @@ -55,5 +52,4 @@ public abstract class MasterSheet extends Sheet { TextShape tx = (TextShape)shape; return tx.getPlaceholderAtom() != null; } - } diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Picture.java b/src/scratchpad/src/org/apache/poi/hslf/model/Picture.java index 72fcbd6af7..408dfc47e7 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Picture.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Picture.java @@ -28,13 +28,11 @@ import org.apache.poi.util.POILogger; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.awt.*; -import java.awt.geom.Rectangle2D; import java.awt.geom.AffineTransform; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.List; -import java.util.Arrays; /** diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Placeholder.java b/src/scratchpad/src/org/apache/poi/hslf/model/Placeholder.java index 71716fe4b8..945d3195c4 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Placeholder.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Placeholder.java @@ -21,7 +21,6 @@ import org.apache.poi.ddf.*; import org.apache.poi.hslf.record.OEPlaceholderAtom; import org.apache.poi.hslf.exceptions.HSLFException; -import java.util.List; import java.io.ByteArrayOutputStream; /** diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Shape.java b/src/scratchpad/src/org/apache/poi/hslf/model/Shape.java index 3971d5216d..49cc01f641 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Shape.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Shape.java @@ -19,7 +19,6 @@ package org.apache.poi.hslf.model; import org.apache.poi.ddf.*; import org.apache.poi.hslf.record.ColorSchemeAtom; -import org.apache.poi.hslf.record.PPDrawing; import org.apache.poi.util.POILogger; import org.apache.poi.util.POILogFactory; diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java b/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java index 6ce6368e51..f42eb8429c 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java @@ -20,7 +20,6 @@ package org.apache.poi.hslf.model; import org.apache.poi.ddf.*; import org.apache.poi.hslf.record.*; import org.apache.poi.hslf.usermodel.SlideShow; -import org.apache.poi.util.POILogger; import java.util.ArrayList; import java.util.Iterator; diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/TableCell.java b/src/scratchpad/src/org/apache/poi/hslf/model/TableCell.java index d8198283bd..d03fc1db19 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/model/TableCell.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/TableCell.java @@ -18,7 +18,6 @@ package org.apache.poi.hslf.model; import org.apache.poi.ddf.*; -import org.apache.poi.hslf.record.TextHeaderAtom; import java.awt.*; diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/TextPainter.java b/src/scratchpad/src/org/apache/poi/hslf/model/TextPainter.java index f297ff0263..6ae2323927 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/model/TextPainter.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/TextPainter.java @@ -17,22 +17,24 @@ package org.apache.poi.hslf.model; -import org.apache.poi.hslf.usermodel.RichTextRun; -import org.apache.poi.hslf.record.TextRulerAtom; -import org.apache.poi.util.POILogger; -import org.apache.poi.util.POILogFactory; - -import java.text.AttributedString; -import java.text.AttributedCharacterIterator; -import java.text.BreakIterator; -import java.awt.font.TextAttribute; +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.font.FontRenderContext; import java.awt.font.LineBreakMeasurer; +import java.awt.font.TextAttribute; import java.awt.font.TextLayout; -import java.awt.font.FontRenderContext; -import java.awt.*; -import java.awt.geom.Rectangle2D; import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.text.AttributedCharacterIterator; +import java.text.AttributedString; import java.util.ArrayList; +import java.util.List; + +import org.apache.poi.hslf.record.TextRulerAtom; +import org.apache.poi.hslf.usermodel.RichTextRun; +import org.apache.poi.util.POILogFactory; +import org.apache.poi.util.POILogger; /** * Paint text into java.awt.Graphics2D @@ -162,7 +164,7 @@ public final class TextPainter { int paragraphStart = it.getBeginIndex(); int paragraphEnd = it.getEndIndex(); - ArrayList lines = new ArrayList(); + List lines = new ArrayList(); LineBreakMeasurer measurer = new LineBreakMeasurer(it, frc); measurer.setPosition(paragraphStart); while (measurer.getPosition() < paragraphEnd) { @@ -296,7 +298,7 @@ public final class TextPainter { //finally draw the text fragments TextElement[] elems = new TextElement[lines.size()]; - return (TextElement[])lines.toArray(elems); + return lines.toArray(elems); } public static class TextElement { diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java b/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java index 6260c62cac..aa24b6c3db 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java @@ -19,7 +19,6 @@ package org.apache.poi.hslf.model; import java.util.LinkedList; import java.util.Vector; -import java.util.List; import org.apache.poi.hslf.model.textproperties.TextPropCollection; import org.apache.poi.hslf.record.*; diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java b/src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java index a4d823be55..5724e270fa 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -30,7 +29,6 @@ import java.awt.geom.AffineTransform; import java.awt.font.FontRenderContext; import java.awt.font.TextLayout; import java.io.IOException; -import java.util.Iterator; /** * A common superclass of all shapes that can hold text. @@ -88,7 +86,7 @@ public abstract class TextShape extends SimpleShape { /** * Create a TextBox object and initialize it from the supplied Record container. - * + * * @param escherRecord EscherSpContainer container which holds information about this shape * @param parent the parent of the shape */ @@ -230,23 +228,23 @@ public abstract class TextShape extends SimpleShape { String fntname = rt.getFontName(); Font font = new Font(fntname, style, size); - float width = 0, height = 0, leading = 0; - String[] lines = txt.split("\n"); + float width = 0, height = 0, leading = 0; + String[] lines = txt.split("\n"); for (int i = 0; i < lines.length; i++) { if(lines[i].length() == 0) continue; - + TextLayout layout = new TextLayout(lines[i], font, _frc); - - leading = Math.max(leading, layout.getLeading()); + + leading = Math.max(leading, layout.getLeading()); width = Math.max(width, layout.getAdvance()); height = Math.max(height, (height + (layout.getDescent() + layout.getAscent()))); - } - + } + // add one character to width - Rectangle2D charBounds = font.getMaxCharBounds(_frc); + Rectangle2D charBounds = font.getMaxCharBounds(_frc); width += getMarginLeft() + getMarginRight() + charBounds.getWidth(); - - // add leading to height + + // add leading to height height += getMarginTop() + getMarginBottom() + leading; Rectangle2D anchor = getAnchor2D(); diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/AnimationInfoAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/AnimationInfoAtom.java index 731a3b51c9..a2ed09c79a 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/record/AnimationInfoAtom.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/AnimationInfoAtom.java @@ -19,9 +19,7 @@ package org.apache.poi.hslf.record; import java.io.IOException; import java.io.OutputStream; -import java.util.Date; -import org.apache.poi.hslf.util.SystemTimeUtils; import org.apache.poi.util.LittleEndian; /** @@ -29,8 +27,7 @@ import org.apache.poi.util.LittleEndian; * * @author Yegor Kozlov */ -public final class AnimationInfoAtom extends RecordAtom -{ +public final class AnimationInfoAtom extends RecordAtom { /** * whether the animation plays in the reverse direction diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/DocumentEncryptionAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/DocumentEncryptionAtom.java index bf7860454a..c473feacea 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/DocumentEncryptionAtom.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/DocumentEncryptionAtom.java @@ -17,7 +17,6 @@ package org.apache.poi.hslf.record; -import org.apache.poi.util.LittleEndian; import org.apache.poi.util.StringUtil; import java.io.IOException; @@ -29,9 +28,7 @@ import java.io.OutputStream; * * @author Nick Burch */ - -public final class DocumentEncryptionAtom extends RecordAtom -{ +public final class DocumentEncryptionAtom extends RecordAtom { private byte[] _header; private static long _type = 12052l; diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/ExAviMovie.java b/src/scratchpad/src/org/apache/poi/hslf/record/ExAviMovie.java index 5d09e53a19..62a5c4bbe3 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/record/ExAviMovie.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/ExAviMovie.java @@ -17,11 +17,6 @@ package org.apache.poi.hslf.record; -import java.io.IOException; -import java.io.OutputStream; - -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.POILogger; /** * A container record that specifies information about a movie stored externally. @@ -50,5 +45,4 @@ public final class ExAviMovie extends ExMCIMovie { public long getRecordType() { return RecordTypes.ExAviMovie.typeID; } - } diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/ExControl.java b/src/scratchpad/src/org/apache/poi/hslf/record/ExControl.java index 7df5a903db..2b0d1e2c37 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/record/ExControl.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/ExControl.java @@ -17,11 +17,6 @@ package org.apache.poi.hslf.record; -import java.io.OutputStream; -import java.io.IOException; - -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.POILogger; /** * A container record that specifies information about an ActiveX control. It contains: diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/ExHyperlinkAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/ExHyperlinkAtom.java index 14c37076b5..99deafdbf2 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/ExHyperlinkAtom.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/ExHyperlinkAtom.java @@ -14,15 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.hslf.record; import java.io.IOException; import java.io.OutputStream; -import java.util.Date; -import org.apache.poi.hslf.util.SystemTimeUtils; import org.apache.poi.util.LittleEndian; /** @@ -31,9 +28,7 @@ import org.apache.poi.util.LittleEndian; * * @author Nick Burch */ - -public class ExHyperlinkAtom extends RecordAtom -{ +public final class ExHyperlinkAtom extends RecordAtom { /** * Record header. */ @@ -53,7 +48,7 @@ public class ExHyperlinkAtom extends RecordAtom LittleEndian.putShort(_header, 2, (short)getRecordType()); LittleEndian.putInt(_header, 4, _data.length); - + // It is fine for the other values to be zero } @@ -69,11 +64,11 @@ public class ExHyperlinkAtom extends RecordAtom // Get the header. _header = new byte[8]; System.arraycopy(source,start,_header,0,8); - + // Get the record data. _data = new byte[len-8]; System.arraycopy(source,start+8,_data,0,len-8); - + // Must be at least 4 bytes long if(_data.length < 4) { throw new IllegalArgumentException("The length of the data for a ExHyperlinkAtom must be at least 4 bytes, but was only " + _data.length); @@ -96,7 +91,7 @@ public class ExHyperlinkAtom extends RecordAtom public void setNumber(int number) { LittleEndian.putInt(_data,0,number); } - + /** * Gets the record type. * @return the record type. diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/ExMediaAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/ExMediaAtom.java index ee38bece75..058f27ea5c 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/record/ExMediaAtom.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/ExMediaAtom.java @@ -19,9 +19,7 @@ package org.apache.poi.hslf.record; import java.io.IOException; import java.io.OutputStream; -import java.util.Date; -import org.apache.poi.hslf.util.SystemTimeUtils; import org.apache.poi.util.LittleEndian; /** diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/FontEntityAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/FontEntityAtom.java index 54284e028f..40ddc569b9 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/FontEntityAtom.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/FontEntityAtom.java @@ -18,7 +18,6 @@ package org.apache.poi.hslf.record; import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/InteractiveInfoAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/InteractiveInfoAtom.java index 0ee8cd883f..6dd8fccf6b 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/InteractiveInfoAtom.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/InteractiveInfoAtom.java @@ -14,15 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.hslf.record; import java.io.IOException; import java.io.OutputStream; -import java.util.Date; -import org.apache.poi.hslf.util.SystemTimeUtils; import org.apache.poi.util.LittleEndian; /** @@ -32,9 +29,7 @@ import org.apache.poi.util.LittleEndian; * @author Nick Burch * @author Yegor Kozlov */ - -public class InteractiveInfoAtom extends RecordAtom -{ +public class InteractiveInfoAtom extends RecordAtom { /** * Action Table @@ -92,7 +87,7 @@ public class InteractiveInfoAtom extends RecordAtom LittleEndian.putShort(_header, 2, (short)getRecordType()); LittleEndian.putInt(_header, 4, _data.length); - + // It is fine for the other values to be zero } @@ -108,16 +103,16 @@ public class InteractiveInfoAtom extends RecordAtom // Get the header. _header = new byte[8]; System.arraycopy(source,start,_header,0,8); - + // Get the record data. _data = new byte[len-8]; System.arraycopy(source,start+8,_data,0,len-8); - + // Must be at least 16 bytes long if(_data.length < 16) { throw new IllegalArgumentException("The length of the data for a InteractiveInfoAtom must be at least 16 bytes, but was only " + _data.length); } - + // First 4 bytes - no idea, normally 0 // Second 4 bytes - the id of the link (from 1 onwards) // Third 4 bytes - no idea, normally 4 @@ -141,7 +136,7 @@ public class InteractiveInfoAtom extends RecordAtom public void setHyperlinkID(int number) { LittleEndian.putInt(_data,4,number); } - + /** * a reference to a sound in the sound collection. */ diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/MainMaster.java b/src/scratchpad/src/org/apache/poi/hslf/record/MainMaster.java index 0c1f02b389..4424e2db75 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/MainMaster.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/MainMaster.java @@ -21,25 +21,21 @@ import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; -import org.apache.poi.util.LittleEndian; - /** * Master slide * * @author Yegor Kozlov */ - -public final class MainMaster extends SheetContainer -{ +public final class MainMaster extends SheetContainer { private byte[] _header; private static long _type = 1016; // Links to our more interesting children private SlideAtom slideAtom; private PPDrawing ppDrawing; - private TxMasterStyleAtom[] txmasters; - private ColorSchemeAtom[] clrscheme; - private ColorSchemeAtom _colorScheme; + private TxMasterStyleAtom[] txmasters; + private ColorSchemeAtom[] clrscheme; + private ColorSchemeAtom _colorScheme; /** * Returns the SlideAtom of this Slide @@ -52,9 +48,9 @@ public final class MainMaster extends SheetContainer */ public PPDrawing getPPDrawing() { return ppDrawing; } - public TxMasterStyleAtom[] getTxMasterStyleAtoms() { return txmasters; } + public TxMasterStyleAtom[] getTxMasterStyleAtoms() { return txmasters; } - public ColorSchemeAtom[] getColorSchemeAtoms() { return clrscheme; } + public ColorSchemeAtom[] getColorSchemeAtoms() { return clrscheme; } /** * Set things up, and find our more interesting children @@ -67,27 +63,27 @@ public final class MainMaster extends SheetContainer // Find our children _children = Record.findChildRecords(source,start+8,len-8); - ArrayList tx = new ArrayList(); - ArrayList clr = new ArrayList(); + ArrayList tx = new ArrayList(); + ArrayList clr = new ArrayList(); // Find the interesting ones in there for(int i=0; i<_children.length; i++) { if(_children[i] instanceof SlideAtom) { slideAtom = (SlideAtom)_children[i]; } else if(_children[i] instanceof PPDrawing) { ppDrawing = (PPDrawing)_children[i]; - } else if(_children[i] instanceof TxMasterStyleAtom) { - tx.add(_children[i]); - } else if(_children[i] instanceof ColorSchemeAtom) { - clr.add(_children[i]); + } else if(_children[i] instanceof TxMasterStyleAtom) { + tx.add(_children[i]); + } else if(_children[i] instanceof ColorSchemeAtom) { + clr.add(_children[i]); } - if(ppDrawing != null && _children[i] instanceof ColorSchemeAtom) { - _colorScheme = (ColorSchemeAtom)_children[i]; - } + if(ppDrawing != null && _children[i] instanceof ColorSchemeAtom) { + _colorScheme = (ColorSchemeAtom)_children[i]; + } } - txmasters = (TxMasterStyleAtom[])tx.toArray(new TxMasterStyleAtom[tx.size()]); - clrscheme = (ColorSchemeAtom[])clr.toArray(new ColorSchemeAtom[clr.size()]); + txmasters = (TxMasterStyleAtom[])tx.toArray(new TxMasterStyleAtom[tx.size()]); + clrscheme = (ColorSchemeAtom[])clr.toArray(new ColorSchemeAtom[clr.size()]); } /** @@ -103,8 +99,7 @@ public final class MainMaster extends SheetContainer writeOut(_header[0],_header[1],_type,_children,out); } - public ColorSchemeAtom getColorScheme(){ - return _colorScheme; - } - + public ColorSchemeAtom getColorScheme(){ + return _colorScheme; + } } diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/OEShapeAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/OEShapeAtom.java index f0975a152e..00b873f6de 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/record/OEShapeAtom.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/OEShapeAtom.java @@ -19,9 +19,7 @@ package org.apache.poi.hslf.record; import java.io.IOException; import java.io.OutputStream; -import java.util.Date; -import org.apache.poi.hslf.util.SystemTimeUtils; import org.apache.poi.util.LittleEndian; /** diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/PPDrawing.java b/src/scratchpad/src/org/apache/poi/hslf/record/PPDrawing.java index 519154c5b5..b77be59c26 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/PPDrawing.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/PPDrawing.java @@ -22,7 +22,6 @@ import org.apache.poi.util.POILogger; import org.apache.poi.ddf.*; import org.apache.poi.hslf.model.ShapeTypes; -import org.apache.poi.hslf.model.Shape; import java.io.IOException; import java.io.OutputStream; @@ -44,16 +43,15 @@ import java.util.Iterator; // For now, pretending to be an atom. Might not always be, but that // would require a wrapping class -public final class PPDrawing extends RecordAtom -{ +public final class PPDrawing extends RecordAtom { private byte[] _header; private long _type; private EscherRecord[] childRecords; private EscherTextboxWrapper[] textboxWrappers; - //cached EscherDgRecord - private EscherDgRecord dg; + //cached EscherDgRecord + private EscherDgRecord dg; /** * Get access to the underlying Escher Records @@ -110,7 +108,7 @@ public final class PPDrawing extends RecordAtom public PPDrawing(){ _header = new byte[8]; LittleEndian.putUShort(_header, 0, 15); - LittleEndian.putUShort(_header, 2, (int)RecordTypes.PPDrawing.typeID); + LittleEndian.putUShort(_header, 2, RecordTypes.PPDrawing.typeID); LittleEndian.putInt(_header, 4, 0); textboxWrappers = new EscherTextboxWrapper[]{}; @@ -122,7 +120,7 @@ public final class PPDrawing extends RecordAtom */ private void findEscherChildren(DefaultEscherRecordFactory erf, byte[] source, int startPos, int lenToGo, Vector found) { - int escherBytes = LittleEndian.getInt( source, startPos + 4 ) + 8; + int escherBytes = LittleEndian.getInt( source, startPos + 4 ) + 8; // Find the record EscherRecord r = erf.createRecord(source,startPos); @@ -137,16 +135,16 @@ public final class PPDrawing extends RecordAtom logger.log(POILogger.WARN, "Hit short DDF record at " + startPos + " - " + size); } - /** - * Sanity check. Always advance the cursor by the correct value. - * - * getRecordSize() must return exatcly the same number of bytes that was written in fillFields. - * Sometimes it is not so, see an example in bug #44770. Most likely reason is that one of ddf records calculates wrong size. - */ - if(size != escherBytes){ - logger.log(POILogger.WARN, "Record length=" + escherBytes + " but getRecordSize() returned " + r.getRecordSize() + "; record: " + r.getClass()); - size = escherBytes; - } + /** + * Sanity check. Always advance the cursor by the correct value. + * + * getRecordSize() must return exatcly the same number of bytes that was written in fillFields. + * Sometimes it is not so, see an example in bug #44770. Most likely reason is that one of ddf records calculates wrong size. + */ + if(size != escherBytes){ + logger.log(POILogger.WARN, "Record length=" + escherBytes + " but getRecordSize() returned " + r.getRecordSize() + "; record: " + r.getClass()); + size = escherBytes; + } startPos += size; lenToGo -= size; if(lenToGo >= 8) { @@ -163,13 +161,13 @@ public final class PPDrawing extends RecordAtom EscherTextboxRecord tbr = (EscherTextboxRecord)toSearch[i]; EscherTextboxWrapper w = new EscherTextboxWrapper(tbr); found.add(w); - for (int j = i; j >= 0; j--) { - if(toSearch[j] instanceof EscherSpRecord){ - EscherSpRecord sp = (EscherSpRecord)toSearch[j]; - w.setShapeId(sp.getShapeId()); - break; - } - } + for (int j = i; j >= 0; j--) { + if(toSearch[j] instanceof EscherSpRecord){ + EscherSpRecord sp = (EscherSpRecord)toSearch[j]; + w.setShapeId(sp.getShapeId()); + break; + } + } } else { // If it has children, walk them if(toSearch[i].isContainerRecord()) { @@ -297,23 +295,22 @@ public final class PPDrawing extends RecordAtom textboxWrappers = tw; } - /** - * Return EscherDgRecord which keeps track of the number of shapes and shapeId in this drawing group - * - * @return EscherDgRecord - */ - public EscherDgRecord getEscherDgRecord(){ - if(dg == null){ - EscherContainerRecord dgContainer = (EscherContainerRecord)childRecords[0]; - for(Iterator it = dgContainer.getChildIterator(); it.hasNext();){ - EscherRecord r = it.next(); - if(r instanceof EscherDgRecord){ - dg = (EscherDgRecord)r; - break; - } - } - } - return dg; - } - + /** + * Return EscherDgRecord which keeps track of the number of shapes and shapeId in this drawing group + * + * @return EscherDgRecord + */ + public EscherDgRecord getEscherDgRecord(){ + if(dg == null){ + EscherContainerRecord dgContainer = (EscherContainerRecord)childRecords[0]; + for(Iterator it = dgContainer.getChildIterator(); it.hasNext();){ + EscherRecord r = it.next(); + if(r instanceof EscherDgRecord){ + dg = (EscherDgRecord)r; + break; + } + } + } + return dg; + } } diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/PPDrawingGroup.java b/src/scratchpad/src/org/apache/poi/hslf/record/PPDrawingGroup.java index 08d523c3e1..ee414bba9b 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/PPDrawingGroup.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/PPDrawingGroup.java @@ -23,7 +23,6 @@ import org.apache.poi.util.LittleEndian; import java.io.OutputStream; import java.io.IOException; import java.io.ByteArrayOutputStream; -import java.util.List; import java.util.Iterator; /** diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/RoundTripHFPlaceholder12.java b/src/scratchpad/src/org/apache/poi/hslf/record/RoundTripHFPlaceholder12.java index 26b9e95f17..412beb1fc2 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/RoundTripHFPlaceholder12.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/RoundTripHFPlaceholder12.java @@ -19,10 +19,6 @@ package org.apache.poi.hslf.record; import java.io.IOException; import java.io.OutputStream; -import java.util.Date; - -import org.apache.poi.hslf.util.SystemTimeUtils; -import org.apache.poi.util.LittleEndian; /** * An atom record that specifies that a shape is a header or footer placeholder shape @@ -30,9 +26,7 @@ import org.apache.poi.util.LittleEndian; * @since PowerPoint 2007 * @author Yegor Kozlov */ - -public final class RoundTripHFPlaceholder12 extends RecordAtom -{ +public final class RoundTripHFPlaceholder12 extends RecordAtom { /** * Record header. */ diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/SlideListWithText.java b/src/scratchpad/src/org/apache/poi/hslf/record/SlideListWithText.java index 11bd4752c7..45fbd72479 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/record/SlideListWithText.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/SlideListWithText.java @@ -17,7 +17,6 @@ package org.apache.poi.hslf.record; -import org.apache.poi.util.ArrayUtil; import org.apache.poi.util.LittleEndian; import java.io.IOException; @@ -46,26 +45,25 @@ import java.util.Vector; */ // For now, pretend to be an atom -public final class SlideListWithText extends RecordContainer -{ - - /** - * Instance filed of the record header indicates that this SlideListWithText stores - * references to slides - */ - public static final int SLIDES = 0; - /** - * Instance filed of the record header indicates that this SlideListWithText stores - * references to master slides - */ - public static final int MASTER = 1; - /** - * Instance filed of the record header indicates that this SlideListWithText stores - * references to notes - */ - public static final int NOTES = 2; - - private byte[] _header; +public final class SlideListWithText extends RecordContainer { + + /** + * Instance filed of the record header indicates that this SlideListWithText stores + * references to slides + */ + public static final int SLIDES = 0; + /** + * Instance filed of the record header indicates that this SlideListWithText stores + * references to master slides + */ + public static final int MASTER = 1; + /** + * Instance filed of the record header indicates that this SlideListWithText stores + * references to notes + */ + public static final int NOTES = 2; + + private byte[] _header; private static long _type = 4080; private SlideAtomsSet[] slideAtomsSets; @@ -148,23 +146,23 @@ public final class SlideListWithText extends RecordContainer slideAtomsSets = sas; } - public int getInstance(){ - return LittleEndian.getShort(_header, 0) >> 4; - } + public int getInstance(){ + return LittleEndian.getShort(_header, 0) >> 4; + } - public void setInstance(int inst){ - LittleEndian.putShort(_header, (short)((inst << 4) | 0xF)); - } + public void setInstance(int inst){ + LittleEndian.putShort(_header, (short)((inst << 4) | 0xF)); + } - /** + /** * Get access to the SlideAtomsSets of the children of this record */ public SlideAtomsSet[] getSlideAtomsSets() { return slideAtomsSets; } - /** - * Get access to the SlideAtomsSets of the children of this record - */ - public void setSlideAtomsSets( SlideAtomsSet[] sas ) { slideAtomsSets = sas; } + /** + * Get access to the SlideAtomsSets of the children of this record + */ + public void setSlideAtomsSets( SlideAtomsSet[] sas ) { slideAtomsSets = sas; } /** * Return the value we were given at creation diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/SoundCollection.java b/src/scratchpad/src/org/apache/poi/hslf/record/SoundCollection.java index 8d86b175e7..abea3887f0 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/record/SoundCollection.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/SoundCollection.java @@ -17,8 +17,6 @@ package org.apache.poi.hslf.record; -import org.apache.poi.util.POILogger; - import java.io.OutputStream; import java.io.IOException; diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/SoundData.java b/src/scratchpad/src/org/apache/poi/hslf/record/SoundData.java index 6492d0175c..32aa9592d3 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/record/SoundData.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/SoundData.java @@ -17,11 +17,8 @@ package org.apache.poi.hslf.record; -import java.io.ByteArrayInputStream; import java.io.IOException; -import java.io.InputStream; import java.io.OutputStream; -import java.util.zip.InflaterInputStream; import org.apache.poi.util.LittleEndian; diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/TextRulerAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/TextRulerAtom.java index 052126e127..84f03b4724 100755 --- a/src/scratchpad/src/org/apache/poi/hslf/record/TextRulerAtom.java +++ b/src/scratchpad/src/org/apache/poi/hslf/record/TextRulerAtom.java @@ -17,11 +17,8 @@ package org.apache.poi.hslf.record; -import java.io.ByteArrayInputStream; import java.io.IOException; -import java.io.InputStream; import java.io.OutputStream; -import java.util.zip.InflaterInputStream; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.POILogger; diff --git a/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java b/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java index b456798bae..8399e48990 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java +++ b/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java @@ -38,220 +38,212 @@ import org.apache.poi.hslf.model.Notes; import org.apache.poi.hslf.model.Slide; import org.apache.poi.hslf.record.*; import org.apache.poi.hslf.record.SlideListWithText.SlideAtomsSet; -import org.apache.poi.util.ArrayUtil; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; /** * This class is a friendly wrapper on top of the more scary HSLFSlideShow. * - * TODO: - * - figure out how to match notes to their correct sheet - * (will involve understanding DocSlideList and DocNotesList) - * - handle Slide creation cleaner + * TODO: - figure out how to match notes to their correct sheet (will involve + * understanding DocSlideList and DocNotesList) - handle Slide creation cleaner * * @author Nick Burch * @author Yegor kozlov */ public final class SlideShow { - // What we're based on - private HSLFSlideShow _hslfSlideShow; - - // Low level contents, as taken from HSLFSlideShow - private Record[] _records; - - // Pointers to the most recent versions of the core records - // (Document, Notes, Slide etc) - private Record[] _mostRecentCoreRecords; - // Lookup between the PersitPtr "sheet" IDs, and the position - // in the mostRecentCoreRecords array - private Hashtable _sheetIdToCoreRecordsLookup; - - // Records that are interesting - private Document _documentRecord; - - // Friendly objects for people to deal with - private SlideMaster[] _masters; - private TitleMaster[] _titleMasters; - private Slide[] _slides; - private Notes[] _notes; - private FontCollection _fonts; - - // For logging - private POILogger logger = POILogFactory.getLogger(this.getClass()); - - - /* =============================================================== - * Setup Code - * =============================================================== - */ - - - /** - * Constructs a Powerpoint document from the underlying - * HSLFSlideShow object. Finds the model stuff from this - * - * @param hslfSlideShow the HSLFSlideShow to base on - */ - public SlideShow(HSLFSlideShow hslfSlideShow) { + // What we're based on + private HSLFSlideShow _hslfSlideShow; + + // Low level contents, as taken from HSLFSlideShow + private Record[] _records; + + // Pointers to the most recent versions of the core records + // (Document, Notes, Slide etc) + private Record[] _mostRecentCoreRecords; + // Lookup between the PersitPtr "sheet" IDs, and the position + // in the mostRecentCoreRecords array + private Hashtable _sheetIdToCoreRecordsLookup; + + // Records that are interesting + private Document _documentRecord; + + // Friendly objects for people to deal with + private SlideMaster[] _masters; + private TitleMaster[] _titleMasters; + private Slide[] _slides; + private Notes[] _notes; + private FontCollection _fonts; + + // For logging + private POILogger logger = POILogFactory.getLogger(this.getClass()); + + + /* =============================================================== + * Setup Code + * =============================================================== + */ + + + /** + * Constructs a Powerpoint document from the underlying + * HSLFSlideShow object. Finds the model stuff from this + * + * @param hslfSlideShow the HSLFSlideShow to base on + */ + public SlideShow(HSLFSlideShow hslfSlideShow) { // Get useful things from our base slideshow - _hslfSlideShow = hslfSlideShow; - _records = _hslfSlideShow.getRecords(); + _hslfSlideShow = hslfSlideShow; + _records = _hslfSlideShow.getRecords(); - // Handle Parent-aware Reocrds - for(int i=0; i<_records.length; i++) { - handleParentAwareRecords(_records[i]); + // Handle Parent-aware Reocrds + for (int i = 0; i < _records.length; i++) { + handleParentAwareRecords(_records[i]); + } + + // Find the versions of the core records we'll want to use + findMostRecentCoreRecords(); + + // Build up the model level Slides and Notes + buildSlidesAndNotes(); } - // Find the versions of the core records we'll want to use - findMostRecentCoreRecords(); - - // Build up the model level Slides and Notes - buildSlidesAndNotes(); - } - - /** - * Constructs a new, empty, Powerpoint document. - */ - public SlideShow() { - this(HSLFSlideShow.create()); - } - - /** - * Constructs a Powerpoint document from an input stream. - */ - public SlideShow(InputStream inputStream) throws IOException { - this(new HSLFSlideShow(inputStream)); - } - - /** - * Find the records that are parent-aware, and tell them - * who their parent is - */ - private void handleParentAwareRecords(Record baseRecord) { - // Only need to do something if this is a container record - if(baseRecord instanceof RecordContainer) { - RecordContainer br = (RecordContainer)baseRecord; - Record[] childRecords = br.getChildRecords(); - - // Loop over child records, looking for interesting ones - for(int i=0; i _slides.length || newSlideNumber > _slides.length) { - throw new IllegalArgumentException("Old and new slide numbers must not exceed the number of slides (" + _slides.length + ")"); + if (oldSlideNumber > _slides.length || newSlideNumber > _slides.length) { + throw new IllegalArgumentException( + "Old and new slide numbers must not exceed the number of slides (" + + _slides.length + ")"); } - // The order of slides is defined by the order of slide atom sets in the SlideListWithText container. - SlideListWithText slwt = _documentRecord.getSlideSlideListWithText(); - SlideAtomsSet[] sas = slwt.getSlideAtomsSets(); - - SlideAtomsSet tmp = sas[oldSlideNumber-1]; - sas[oldSlideNumber-1] = sas[newSlideNumber-1]; - sas[newSlideNumber-1] = tmp; - - ArrayList lst = new ArrayList(); - for (int i = 0; i < sas.length; i++) { - lst.add(sas[i].getSlidePersistAtom()); - Record[] r = sas[i].getSlideRecords(); - for (int j = 0; j < r.length; j++) { - lst.add(r[j]); - } - _slides[i].setSlideNumber(i+1); - } - Record[] r = (Record[])lst.toArray(new Record[lst.size()]); - slwt.setChildRecord(r); + // The order of slides is defined by the order of slide atom sets in the + // SlideListWithText container. + SlideListWithText slwt = _documentRecord.getSlideSlideListWithText(); + SlideAtomsSet[] sas = slwt.getSlideAtomsSets(); + + SlideAtomsSet tmp = sas[oldSlideNumber - 1]; + sas[oldSlideNumber - 1] = sas[newSlideNumber - 1]; + sas[newSlideNumber - 1] = tmp; + + ArrayList lst = new ArrayList(); + for (int i = 0; i < sas.length; i++) { + lst.add(sas[i].getSlidePersistAtom()); + Record[] r = sas[i].getSlideRecords(); + for (int j = 0; j < r.length; j++) { + lst.add(r[j]); + } + _slides[i].setSlideNumber(i + 1); + } + Record[] r = (Record[]) lst.toArray(new Record[lst.size()]); + slwt.setChildRecord(r); } - /** - * Removes the slide at the given index (0-based). - *

Shifts any subsequent slides to the left (subtracts one from their slide numbers).

- * - * @param index the index of the slide to remove (0-based) - * @return the slide that was removed from the slide show. - */ - public Slide removeSlide(int index) { - int lastSlideIdx = _slides.length - 1; - if(index < 0 || index > lastSlideIdx) { - throw new IllegalArgumentException("Slide index (" - + index +") is out of range (0.." + lastSlideIdx + ")"); - } - - SlideListWithText slwt = _documentRecord.getSlideSlideListWithText(); - SlideAtomsSet[] sas = slwt.getSlideAtomsSets(); - - Slide removedSlide = null; - ArrayList records = new ArrayList(); - ArrayList sa = new ArrayList(); - ArrayList sl = new ArrayList(); - - ArrayList nt = new ArrayList(); - for(Notes notes : getNotes()) nt.add(notes); - - for (int i = 0, num = 0; i < _slides.length; i++){ - if(i != index) { - sl.add(_slides[i]); - sa.add(sas[i]); - _slides[i].setSlideNumber(num++); - records.add(sas[i].getSlidePersistAtom()); - records.addAll(Arrays.asList(sas[i].getSlideRecords())); - } else { - removedSlide = _slides[i]; - nt.remove(_slides[i].getNotesSheet()); - } - } - if(sa.size() == 0){ - _documentRecord.removeSlideListWithText(slwt); - } else { - slwt.setSlideAtomsSets( sa.toArray(new SlideAtomsSet[sa.size()]) ); - slwt.setChildRecord(records.toArray(new Record[records.size()])); - } - _slides = sl.toArray(new Slide[sl.size()]); - - //if the removed slide had notes - remove references to them too - - if(removedSlide != null){ - int notesId = removedSlide.getSlideRecord().getSlideAtom().getNotesID(); - if(notesId != 0){ - SlideListWithText nslwt = _documentRecord.getNotesSlideListWithText(); - records = new ArrayList(); - ArrayList na = new ArrayList(); - for (SlideAtomsSet ns : nslwt.getSlideAtomsSets()){ - if(ns.getSlidePersistAtom().getSlideIdentifier() != notesId) { - na.add(ns); - records.add(ns.getSlidePersistAtom()); - if(ns.getSlideRecords() != null) records.addAll(Arrays.asList(ns.getSlideRecords())); - } - } - if(na.size() == 0){ - _documentRecord.removeSlideListWithText(nslwt); - } else { - nslwt.setSlideAtomsSets( na.toArray(new SlideAtomsSet[na.size()]) ); - nslwt.setChildRecord(records.toArray(new Record[records.size()])); - } - - } - } - _notes = nt.toArray(new Notes[nt.size()]); - - return removedSlide; - } - - /* =============================================================== - * Addition Code - * =============================================================== + /** + * Removes the slide at the given index (0-based). + *

+ * Shifts any subsequent slides to the left (subtracts one from their slide + * numbers). + *

+ * + * @param index + * the index of the slide to remove (0-based) + * @return the slide that was removed from the slide show. */ + public Slide removeSlide(int index) { + int lastSlideIdx = _slides.length - 1; + if (index < 0 || index > lastSlideIdx) { + throw new IllegalArgumentException("Slide index (" + index + ") is out of range (0.." + + lastSlideIdx + ")"); + } + SlideListWithText slwt = _documentRecord.getSlideSlideListWithText(); + SlideAtomsSet[] sas = slwt.getSlideAtomsSets(); + + Slide removedSlide = null; + ArrayList records = new ArrayList(); + ArrayList sa = new ArrayList(); + ArrayList sl = new ArrayList(); + + ArrayList nt = new ArrayList(); + for (Notes notes : getNotes()) + nt.add(notes); + + for (int i = 0, num = 0; i < _slides.length; i++) { + if (i != index) { + sl.add(_slides[i]); + sa.add(sas[i]); + _slides[i].setSlideNumber(num++); + records.add(sas[i].getSlidePersistAtom()); + records.addAll(Arrays.asList(sas[i].getSlideRecords())); + } else { + removedSlide = _slides[i]; + nt.remove(_slides[i].getNotesSheet()); + } + } + if (sa.size() == 0) { + _documentRecord.removeSlideListWithText(slwt); + } else { + slwt.setSlideAtomsSets(sa.toArray(new SlideAtomsSet[sa.size()])); + slwt.setChildRecord(records.toArray(new Record[records.size()])); + } + _slides = sl.toArray(new Slide[sl.size()]); + + // if the removed slide had notes - remove references to them too + + if (removedSlide != null) { + int notesId = removedSlide.getSlideRecord().getSlideAtom().getNotesID(); + if (notesId != 0) { + SlideListWithText nslwt = _documentRecord.getNotesSlideListWithText(); + records = new ArrayList(); + ArrayList na = new ArrayList(); + for (SlideAtomsSet ns : nslwt.getSlideAtomsSets()) { + if (ns.getSlidePersistAtom().getSlideIdentifier() != notesId) { + na.add(ns); + records.add(ns.getSlidePersistAtom()); + if (ns.getSlideRecords() != null) + records.addAll(Arrays.asList(ns.getSlideRecords())); + } + } + if (na.size() == 0) { + _documentRecord.removeSlideListWithText(nslwt); + } else { + nslwt.setSlideAtomsSets(na.toArray(new SlideAtomsSet[na.size()])); + nslwt.setChildRecord(records.toArray(new Record[records.size()])); + } + + } + } + _notes = nt.toArray(new Notes[nt.size()]); + + return removedSlide; + } + + /* + * =============================================================== + * Addition Code + * =============================================================== + */ /** * Create a blank Slide. * - * @return the created Slide + * @return the created Slide */ - public Slide createSlide() { - SlideListWithText slist = null; - - // We need to add the records to the SLWT that deals - // with Slides. - // Add it, if it doesn't exist - slist = _documentRecord.getSlideSlideListWithText(); - if(slist == null) { - // Need to add a new one - slist = new SlideListWithText(); - slist.setInstance(SlideListWithText.SLIDES); - _documentRecord.addSlideListWithText(slist); - } - - // Grab the SlidePersistAtom with the highest Slide Number. - // (Will stay as null if no SlidePersistAtom exists yet in - // the slide, or only master slide's ones do) - SlidePersistAtom prev = null; + public Slide createSlide() { + SlideListWithText slist = null; + + // We need to add the records to the SLWT that deals + // with Slides. + // Add it, if it doesn't exist + slist = _documentRecord.getSlideSlideListWithText(); + if (slist == null) { + // Need to add a new one + slist = new SlideListWithText(); + slist.setInstance(SlideListWithText.SLIDES); + _documentRecord.addSlideListWithText(slist); + } + + // Grab the SlidePersistAtom with the highest Slide Number. + // (Will stay as null if no SlidePersistAtom exists yet in + // the slide, or only master slide's ones do) + SlidePersistAtom prev = null; SlideAtomsSet[] sas = slist.getSlideAtomsSets(); - for(int j=0; jPicture class. + * @return the index to this picture (1 based). + */ + public int addPicture(byte[] data, int format) throws IOException { + byte[] uid = PictureData.getChecksum(data); + + EscherContainerRecord bstore; + + EscherContainerRecord dggContainer = _documentRecord.getPPDrawingGroup().getDggContainer(); + bstore = (EscherContainerRecord) Shape.getEscherChild(dggContainer, + EscherContainerRecord.BSTORE_CONTAINER); + if (bstore == null) { + bstore = new EscherContainerRecord(); + bstore.setRecordId(EscherContainerRecord.BSTORE_CONTAINER); + + dggContainer.addChildBefore(bstore, EscherOptRecord.RECORD_ID); + } else { + Iterator iter = bstore.getChildIterator(); + for (int i = 0; iter.hasNext(); i++) { + EscherBSERecord bse = (EscherBSERecord) iter.next(); + if (Arrays.equals(bse.getUid(), uid)) { + return i + 1; + } + } + } + + PictureData pict = PictureData.create(format); + pict.setData(data); + + int offset = _hslfSlideShow.addPicture(pict); + + EscherBSERecord bse = new EscherBSERecord(); + bse.setRecordId(EscherBSERecord.RECORD_ID); + bse.setOptions((short) (0x0002 | (format << 4))); + bse.setSize(pict.getRawData().length + 8); + bse.setUid(uid); + + bse.setBlipTypeMacOS((byte) format); + bse.setBlipTypeWin32((byte) format); + + if (format == Picture.EMF) + bse.setBlipTypeMacOS((byte) Picture.PICT); + else if (format == Picture.WMF) + bse.setBlipTypeMacOS((byte) Picture.PICT); + else if (format == Picture.PICT) + bse.setBlipTypeWin32((byte) Picture.WMF); + + bse.setRef(0); + bse.setOffset(offset); + bse.setRemainingData(new byte[0]); + + bstore.addChildRecord(bse); + int count = bstore.getChildRecords().size(); + bstore.setOptions((short) ((count << 4) | 0xF)); + + return count; } - /** - * Adds a picture to this presentation and returns the associated index. - * - * @param data picture data - * @param format the format of the picture. One of constans defined in the Picture class. - * @return the index to this picture (1 based). - */ - public int addPicture(byte[] data, int format) throws IOException { - byte[] uid = PictureData.getChecksum(data); - - EscherContainerRecord bstore; - - EscherContainerRecord dggContainer = _documentRecord.getPPDrawingGroup().getDggContainer(); - bstore = (EscherContainerRecord)Shape.getEscherChild(dggContainer, EscherContainerRecord.BSTORE_CONTAINER); - if (bstore == null){ - bstore = new EscherContainerRecord(); - bstore.setRecordId( EscherContainerRecord.BSTORE_CONTAINER); - - dggContainer.addChildBefore(bstore, EscherOptRecord.RECORD_ID); - } else { - Iterator iter = bstore.getChildIterator(); - for (int i = 0; iter.hasNext(); i++) { - EscherBSERecord bse = (EscherBSERecord) iter.next(); - if (Arrays.equals(bse.getUid(), uid)){ - return i + 1; - } - } - } - - PictureData pict = PictureData.create(format); - pict.setData(data); - - int offset = _hslfSlideShow.addPicture(pict); - - EscherBSERecord bse = new EscherBSERecord(); - bse.setRecordId(EscherBSERecord.RECORD_ID); - bse.setOptions( (short) ( 0x0002 | ( format << 4 ) ) ); - bse.setSize(pict.getRawData().length + 8); - bse.setUid(uid); - - bse.setBlipTypeMacOS((byte)format); - bse.setBlipTypeWin32((byte)format); - - if (format == Picture.EMF) bse.setBlipTypeMacOS((byte)Picture.PICT); - else if (format == Picture.WMF) bse.setBlipTypeMacOS((byte)Picture.PICT); - else if (format == Picture.PICT) bse.setBlipTypeWin32((byte)Picture.WMF); - - bse.setRef(0); - bse.setOffset(offset); - bse.setRemainingData( new byte[0] ); - - bstore.addChildRecord(bse); - int count = bstore.getChildRecords().size(); - bstore.setOptions((short)( (count << 4) | 0xF )); - - return count; - } - - /** - * Adds a picture to this presentation and returns the associated index. - * - * @param pict the file containing the image to add - * @param format the format of the picture. One of constans defined in the Picture class. - * @return the index to this picture (1 based). - */ - public int addPicture(File pict, int format) throws IOException { - int length = (int)pict.length(); - byte[] data = new byte[length]; - try { - FileInputStream is = new FileInputStream(pict); - is.read(data); - is.close(); - } catch (IOException e){ - throw new HSLFException(e); - } - return addPicture(data, format); - } - - /** - * Add a font in this presentation - * - * @param font the font to add - * @return 0-based index of the font - */ - public int addFont(PPFont font) { - FontCollection fonts = getDocumentRecord().getEnvironment().getFontCollection(); - int idx = fonts.getFontIndex(font.getFontName()); - if(idx == -1){ - idx = fonts.addFont(font.getFontName(), font.getCharSet(), font.getFontFlags(), font.getFontType(), font.getPitchAndFamily()); - } - return idx; - } - - /** - * Get a font by index - * - * @param idx 0-based index of the font - * @return of an instance of PPFont or null if not found - */ - public PPFont getFont(int idx) { - PPFont font = null; - FontCollection fonts = getDocumentRecord().getEnvironment().getFontCollection(); - Record[] ch = fonts.getChildRecords(); - for (int i = 0; i < ch.length; i++) { - if(ch[i] instanceof FontEntityAtom) { - FontEntityAtom atom = (FontEntityAtom)ch[i]; - if(atom.getFontIndex() == idx){ - font = new PPFont(atom); - break; - } - } - } - return font; - } - - /** - * get the number of fonts in the presentation - * - * @return number of fonts - */ - public int getNumberOfFonts() { - return getDocumentRecord().getEnvironment().getFontCollection().getNumberOfFonts(); - } - - /** - * Return Header / Footer settings for slides - * - * @return Header / Footer settings for slides - */ - public HeadersFooters getSlideHeadersFooters(){ - //detect if this ppt was saved in Office2007 - String tag = getSlidesMasters()[0].getProgrammableTag(); - boolean ppt2007 = "___PPT12".equals(tag); - - HeadersFootersContainer hdd = null; - Record[] ch = _documentRecord.getChildRecords(); - for (int i = 0; i < ch.length; i++) { - if(ch[i] instanceof HeadersFootersContainer && - ((HeadersFootersContainer)ch[i]).getOptions() == HeadersFootersContainer.SlideHeadersFootersContainer){ - hdd = (HeadersFootersContainer)ch[i]; - break; - } - } - boolean newRecord = false; - if(hdd == null) { - hdd = new HeadersFootersContainer(HeadersFootersContainer.SlideHeadersFootersContainer); - newRecord = true; - } - return new HeadersFooters(hdd, this, newRecord, ppt2007); - } - - /** - * Return Header / Footer settings for notes - * - * @return Header / Footer settings for notes - */ - public HeadersFooters getNotesHeadersFooters(){ - //detect if this ppt was saved in Office2007 - String tag = getSlidesMasters()[0].getProgrammableTag(); - boolean ppt2007 = "___PPT12".equals(tag); - - HeadersFootersContainer hdd = null; - Record[] ch = _documentRecord.getChildRecords(); - for (int i = 0; i < ch.length; i++) { - if(ch[i] instanceof HeadersFootersContainer && - ((HeadersFootersContainer)ch[i]).getOptions() == HeadersFootersContainer.NotesHeadersFootersContainer){ - hdd = (HeadersFootersContainer)ch[i]; - break; - } - } - boolean newRecord = false; - if(hdd == null) { - hdd = new HeadersFootersContainer(HeadersFootersContainer.NotesHeadersFootersContainer); - newRecord = true; - } - if(ppt2007 && _notes.length > 0){ - return new HeadersFooters(hdd, _notes[0], newRecord, ppt2007); - } else { - return new HeadersFooters(hdd, this, newRecord, ppt2007); - } - } - - /** - * Add a movie in this presentation - * - * @param path the path or url to the movie - * @return 0-based index of the movie - */ - public int addMovie(String path, int type) { - ExObjList lst = (ExObjList)_documentRecord.findFirstOfType(RecordTypes.ExObjList.typeID); - if(lst == null){ - lst = new ExObjList(); - _documentRecord.addChildAfter(lst, _documentRecord.getDocumentAtom()); - } - - ExObjListAtom objAtom = lst.getExObjListAtom(); - //increment the object ID seed - int objectId = (int)objAtom.getObjectIDSeed() + 1; - objAtom.setObjectIDSeed(objectId); - ExMCIMovie mci; - switch (type){ - case MovieShape.MOVIE_MPEG: - mci = new ExMCIMovie(); - break; - case MovieShape.MOVIE_AVI: - mci = new ExAviMovie(); - break; - default: - throw new IllegalArgumentException("Unsupported Movie: " + type); - } - - lst.appendChildRecord(mci); - ExVideoContainer exVideo = mci.getExVideo(); - exVideo.getExMediaAtom().setObjectId(objectId); - exVideo.getExMediaAtom().setMask(0xE80000); - exVideo.getPathAtom().setText(path); - return objectId; - } - - /** - * Add a control in this presentation - * - * @param name name of the control, e.g. "Shockwave Flash Object" - * @param progId OLE Programmatic Identifier, e.g. "ShockwaveFlash.ShockwaveFlash.9" - * @return 0-based index of the control - */ - public int addControl(String name, String progId) { - ExObjList lst = (ExObjList)_documentRecord.findFirstOfType(RecordTypes.ExObjList.typeID); - if (lst == null) { - lst = new ExObjList(); - _documentRecord.addChildAfter(lst, _documentRecord.getDocumentAtom()); - } - ExObjListAtom objAtom = lst.getExObjListAtom(); - //increment the object ID seed - int objectId = (int) objAtom.getObjectIDSeed() + 1; - objAtom.setObjectIDSeed(objectId); - ExControl ctrl = new ExControl(); - ExOleObjAtom oleObj = ctrl.getExOleObjAtom(); - oleObj.setObjID(objectId); - oleObj.setDrawAspect(ExOleObjAtom.DRAW_ASPECT_VISIBLE); - oleObj.setType(ExOleObjAtom.TYPE_CONTROL); - oleObj.setSubType(ExOleObjAtom.SUBTYPE_DEFAULT); - - ctrl.setProgId(progId); - ctrl.setMenuName(name); - ctrl.setClipboardName(name); - lst.addChildAfter(ctrl, objAtom); - - return objectId; - } - - /** - * Add a hyperlink to this presentation - * - * @return 0-based index of the hyperlink - */ - public int addHyperlink(Hyperlink link) { - ExObjList lst = (ExObjList)_documentRecord.findFirstOfType(RecordTypes.ExObjList.typeID); - if (lst == null) { - lst = new ExObjList(); - _documentRecord.addChildAfter(lst, _documentRecord.getDocumentAtom()); - } - ExObjListAtom objAtom = lst.getExObjListAtom(); - //increment the object ID seed - int objectId = (int) objAtom.getObjectIDSeed() + 1; - objAtom.setObjectIDSeed(objectId); - - ExHyperlink ctrl = new ExHyperlink(); - ExHyperlinkAtom obj = ctrl.getExHyperlinkAtom(); - obj.setNumber(objectId); - ctrl.setLinkURL(link.getAddress()); - ctrl.setLinkTitle(link.getTitle()); - lst.addChildAfter(ctrl, objAtom); - link.setId(objectId); - - return objectId; - } + /** + * Adds a picture to this presentation and returns the associated index. + * + * @param pict + * the file containing the image to add + * @param format + * the format of the picture. One of constans defined in the + * Picture class. + * @return the index to this picture (1 based). + */ + public int addPicture(File pict, int format) throws IOException { + int length = (int) pict.length(); + byte[] data = new byte[length]; + try { + FileInputStream is = new FileInputStream(pict); + is.read(data); + is.close(); + } catch (IOException e) { + throw new HSLFException(e); + } + return addPicture(data, format); + } + + /** + * Add a font in this presentation + * + * @param font + * the font to add + * @return 0-based index of the font + */ + public int addFont(PPFont font) { + FontCollection fonts = getDocumentRecord().getEnvironment().getFontCollection(); + int idx = fonts.getFontIndex(font.getFontName()); + if (idx == -1) { + idx = fonts.addFont(font.getFontName(), font.getCharSet(), font.getFontFlags(), font + .getFontType(), font.getPitchAndFamily()); + } + return idx; + } + + /** + * Get a font by index + * + * @param idx + * 0-based index of the font + * @return of an instance of PPFont or null if not + * found + */ + public PPFont getFont(int idx) { + PPFont font = null; + FontCollection fonts = getDocumentRecord().getEnvironment().getFontCollection(); + Record[] ch = fonts.getChildRecords(); + for (int i = 0; i < ch.length; i++) { + if (ch[i] instanceof FontEntityAtom) { + FontEntityAtom atom = (FontEntityAtom) ch[i]; + if (atom.getFontIndex() == idx) { + font = new PPFont(atom); + break; + } + } + } + return font; + } + + /** + * get the number of fonts in the presentation + * + * @return number of fonts + */ + public int getNumberOfFonts() { + return getDocumentRecord().getEnvironment().getFontCollection().getNumberOfFonts(); + } + + /** + * Return Header / Footer settings for slides + * + * @return Header / Footer settings for slides + */ + public HeadersFooters getSlideHeadersFooters() { + // detect if this ppt was saved in Office2007 + String tag = getSlidesMasters()[0].getProgrammableTag(); + boolean ppt2007 = "___PPT12".equals(tag); + + HeadersFootersContainer hdd = null; + Record[] ch = _documentRecord.getChildRecords(); + for (int i = 0; i < ch.length; i++) { + if (ch[i] instanceof HeadersFootersContainer + && ((HeadersFootersContainer) ch[i]).getOptions() == HeadersFootersContainer.SlideHeadersFootersContainer) { + hdd = (HeadersFootersContainer) ch[i]; + break; + } + } + boolean newRecord = false; + if (hdd == null) { + hdd = new HeadersFootersContainer(HeadersFootersContainer.SlideHeadersFootersContainer); + newRecord = true; + } + return new HeadersFooters(hdd, this, newRecord, ppt2007); + } + + /** + * Return Header / Footer settings for notes + * + * @return Header / Footer settings for notes + */ + public HeadersFooters getNotesHeadersFooters() { + // detect if this ppt was saved in Office2007 + String tag = getSlidesMasters()[0].getProgrammableTag(); + boolean ppt2007 = "___PPT12".equals(tag); + + HeadersFootersContainer hdd = null; + Record[] ch = _documentRecord.getChildRecords(); + for (int i = 0; i < ch.length; i++) { + if (ch[i] instanceof HeadersFootersContainer + && ((HeadersFootersContainer) ch[i]).getOptions() == HeadersFootersContainer.NotesHeadersFootersContainer) { + hdd = (HeadersFootersContainer) ch[i]; + break; + } + } + boolean newRecord = false; + if (hdd == null) { + hdd = new HeadersFootersContainer(HeadersFootersContainer.NotesHeadersFootersContainer); + newRecord = true; + } + if (ppt2007 && _notes.length > 0) { + return new HeadersFooters(hdd, _notes[0], newRecord, ppt2007); + } else { + return new HeadersFooters(hdd, this, newRecord, ppt2007); + } + } + + /** + * Add a movie in this presentation + * + * @param path + * the path or url to the movie + * @return 0-based index of the movie + */ + public int addMovie(String path, int type) { + ExObjList lst = (ExObjList) _documentRecord.findFirstOfType(RecordTypes.ExObjList.typeID); + if (lst == null) { + lst = new ExObjList(); + _documentRecord.addChildAfter(lst, _documentRecord.getDocumentAtom()); + } + + ExObjListAtom objAtom = lst.getExObjListAtom(); + // increment the object ID seed + int objectId = (int) objAtom.getObjectIDSeed() + 1; + objAtom.setObjectIDSeed(objectId); + ExMCIMovie mci; + switch (type) { + case MovieShape.MOVIE_MPEG: + mci = new ExMCIMovie(); + break; + case MovieShape.MOVIE_AVI: + mci = new ExAviMovie(); + break; + default: + throw new IllegalArgumentException("Unsupported Movie: " + type); + } + + lst.appendChildRecord(mci); + ExVideoContainer exVideo = mci.getExVideo(); + exVideo.getExMediaAtom().setObjectId(objectId); + exVideo.getExMediaAtom().setMask(0xE80000); + exVideo.getPathAtom().setText(path); + return objectId; + } + + /** + * Add a control in this presentation + * + * @param name + * name of the control, e.g. "Shockwave Flash Object" + * @param progId + * OLE Programmatic Identifier, e.g. + * "ShockwaveFlash.ShockwaveFlash.9" + * @return 0-based index of the control + */ + public int addControl(String name, String progId) { + ExObjList lst = (ExObjList) _documentRecord.findFirstOfType(RecordTypes.ExObjList.typeID); + if (lst == null) { + lst = new ExObjList(); + _documentRecord.addChildAfter(lst, _documentRecord.getDocumentAtom()); + } + ExObjListAtom objAtom = lst.getExObjListAtom(); + // increment the object ID seed + int objectId = (int) objAtom.getObjectIDSeed() + 1; + objAtom.setObjectIDSeed(objectId); + ExControl ctrl = new ExControl(); + ExOleObjAtom oleObj = ctrl.getExOleObjAtom(); + oleObj.setObjID(objectId); + oleObj.setDrawAspect(ExOleObjAtom.DRAW_ASPECT_VISIBLE); + oleObj.setType(ExOleObjAtom.TYPE_CONTROL); + oleObj.setSubType(ExOleObjAtom.SUBTYPE_DEFAULT); + + ctrl.setProgId(progId); + ctrl.setMenuName(name); + ctrl.setClipboardName(name); + lst.addChildAfter(ctrl, objAtom); + + return objectId; + } + + /** + * Add a hyperlink to this presentation + * + * @return 0-based index of the hyperlink + */ + public int addHyperlink(Hyperlink link) { + ExObjList lst = (ExObjList) _documentRecord.findFirstOfType(RecordTypes.ExObjList.typeID); + if (lst == null) { + lst = new ExObjList(); + _documentRecord.addChildAfter(lst, _documentRecord.getDocumentAtom()); + } + ExObjListAtom objAtom = lst.getExObjListAtom(); + // increment the object ID seed + int objectId = (int) objAtom.getObjectIDSeed() + 1; + objAtom.setObjectIDSeed(objectId); + + ExHyperlink ctrl = new ExHyperlink(); + ExHyperlinkAtom obj = ctrl.getExHyperlinkAtom(); + obj.setNumber(objectId); + ctrl.setLinkURL(link.getAddress()); + ctrl.setLinkTitle(link.getTitle()); + lst.addChildAfter(ctrl, objAtom); + link.setId(objectId); + + return objectId; + } } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/DocumentProperties.java b/src/scratchpad/src/org/apache/poi/hwpf/model/DocumentProperties.java index fed2e0643d..489b35af5d 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/DocumentProperties.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/DocumentProperties.java @@ -17,7 +17,6 @@ package org.apache.poi.hwpf.model; -import org.apache.poi.util.LittleEndian; import org.apache.poi.hwpf.model.types.DOPAbstractType; /** @@ -25,13 +24,10 @@ import org.apache.poi.hwpf.model.types.DOPAbstractType; * * @author Ryan Ackley */ +public final class DocumentProperties extends DOPAbstractType { -public final class DocumentProperties extends DOPAbstractType -{ - - public DocumentProperties(byte[] tableStream, int offset) - { - super.fillFields(tableStream, offset); - } + public DocumentProperties(byte[] tableStream, int offset) { + super.fillFields(tableStream, offset); + } } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/PAPFormattedDiskPage.java b/src/scratchpad/src/org/apache/poi/hwpf/model/PAPFormattedDiskPage.java index 755c37b407..37f5e129b4 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/PAPFormattedDiskPage.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/PAPFormattedDiskPage.java @@ -17,7 +17,6 @@ package org.apache.poi.hwpf.model; -import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.util.LittleEndian; import java.util.ArrayList; @@ -40,8 +39,7 @@ import java.util.Arrays; * * @author Ryan Ackley */ -public final class PAPFormattedDiskPage extends FormattedDiskPage -{ +public final class PAPFormattedDiskPage extends FormattedDiskPage { private static final int BX_SIZE = 13; private static final int FC_SIZE = 4; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/StyleSheet.java b/src/scratchpad/src/org/apache/poi/hwpf/model/StyleSheet.java index e8a1610739..c0a6a029aa 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/StyleSheet.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/StyleSheet.java @@ -17,7 +17,6 @@ package org.apache.poi.hwpf.model; -import java.util.*; import java.io.IOException; import org.apache.poi.util.LittleEndian; @@ -35,9 +34,7 @@ import org.apache.poi.hwpf.sprm.CharacterSprmUncompressor; * * @author Ryan Ackley */ - -public final class StyleSheet implements HDFType -{ +public final class StyleSheet implements HDFType { public static final int NIL_STYLE = 4095; private static final int PAP_TYPE = 1; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java b/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java index 16dd648c7c..65dc9e1913 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/TextPieceTable.java @@ -17,254 +17,229 @@ package org.apache.poi.hwpf.model; - import org.apache.poi.hwpf.model.io.HWPFOutputStream; import org.apache.poi.poifs.common.POIFSConstants; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; -import java.util.Hashtable; import java.util.Iterator; import java.util.List; /** - * The piece table for matching up character positions - * to bits of text. - * This mostly works in bytes, but the TextPieces - * themselves work in characters. This does the icky - * convertion. + * The piece table for matching up character positions to bits of text. This + * mostly works in bytes, but the TextPieces themselves work in characters. This + * does the icky convertion. + * * @author Ryan Ackley */ -public final class TextPieceTable implements CharIndexTranslator -{ - protected ArrayList _textPieces = new ArrayList(); - //int _multiple; - int _cpMin; - - public TextPieceTable() { - } - - public TextPieceTable(byte[] documentStream, byte[] tableStream, int offset, - int size, int fcMin) - throws UnsupportedEncodingException - { - // get our plex of PieceDescriptors - PlexOfCps pieceTable = new PlexOfCps(tableStream, offset, size, PieceDescriptor.getSizeInBytes()); - - int length = pieceTable.length(); - PieceDescriptor[] pieces = new PieceDescriptor[length]; - - // iterate through piece descriptors raw bytes and create - // PieceDescriptor objects - for (int x = 0; x < length; x++) - { - GenericPropertyNode node = pieceTable.getProperty(x); - pieces[x] = new PieceDescriptor(node.getBytes(), 0); - } - - - // Figure out the cp of the earliest text piece - // Note that text pieces don't have to be stored in order! - _cpMin = pieces[0].getFilePosition() - fcMin; - for (int x = 0; x < pieces.length; x++) { - int start = pieces[x].getFilePosition() - fcMin; - if(start < _cpMin) { - _cpMin = start; - } - } - - - // using the PieceDescriptors, build our list of TextPieces. - for (int x = 0; x < pieces.length; x++) - { - int start = pieces[x].getFilePosition(); - PropertyNode node = pieceTable.getProperty(x); - - // Grab the start and end, which are in characters - int nodeStartChars = node.getStart(); - int nodeEndChars = node.getEnd(); - - // What's the relationship between bytes and characters? - boolean unicode = pieces[x].isUnicode(); - int multiple = 1; - if (unicode) { - multiple = 2; - } - - // Figure out the length, in bytes and chars - int textSizeChars = (nodeEndChars - nodeStartChars); - int textSizeBytes = textSizeChars * multiple; - - // Grab the data that makes up the piece - byte[] buf = new byte[textSizeBytes]; - System.arraycopy(documentStream, start, buf, 0, textSizeBytes); - - // And now build the piece - _textPieces.add(new TextPiece(nodeStartChars, nodeEndChars, buf, pieces[x], node.getStart())); - } - - // In the interest of our sanity, now sort the text pieces - // into order, if they're not already - TextPiece[] tp = (TextPiece[]) - _textPieces.toArray(new TextPiece[_textPieces.size()]); - Arrays.sort(tp); - for(int i=0; i= cp) { - return tp.isUnicode(); - } - // Otherwise keep track for the last one - lastWas = tp.isUnicode(); - } - - // If they ask off the end, just go with the last one... - return lastWas; - } - - public boolean isUnicodeAtByteOffset(int bytePos) { - boolean lastWas = false; - - - Iterator it = _textPieces.iterator(); - while(it.hasNext()) { - TextPiece tp = (TextPiece)it.next(); - int curByte = tp.getPieceDescriptor().getFilePosition(); - int pieceEnd = curByte + tp.bytesLength(); - - // If the text piece covers the character, all good - if(curByte <= bytePos && pieceEnd > bytePos) { - return tp.isUnicode(); - } - // Otherwise keep track for the last one - lastWas = tp.isUnicode(); - // Move along - curByte = pieceEnd; - } - - // If they ask off the end, just go with the last one... - return lastWas; - } - - public byte[] writeTo(HWPFOutputStream docStream) - throws IOException - { - - PlexOfCps textPlex = new PlexOfCps(PieceDescriptor.getSizeInBytes()); - //int fcMin = docStream.getOffset(); - - int size = _textPieces.size(); - for (int x = 0; x < size; x++) - { - TextPiece next = (TextPiece)_textPieces.get(x); - PieceDescriptor pd = next.getPieceDescriptor(); - - int offset = docStream.getOffset(); - int mod = (offset % POIFSConstants.BIG_BLOCK_SIZE); - if (mod != 0) - { - mod = POIFSConstants.BIG_BLOCK_SIZE - mod; - byte[] buf = new byte[mod]; - docStream.write(buf); - } - - - // set the text piece position to the current docStream offset. - pd.setFilePosition(docStream.getOffset()); - - // write the text to the docstream and save the piece descriptor to the - // plex which will be written later to the tableStream. - docStream.write(next.getRawBytes()); - - // The TextPiece is already in characters, which - // makes our life much easier - int nodeStart = next.getStart(); - int nodeEnd = next.getEnd(); - textPlex.addProperty(new GenericPropertyNode(nodeStart, nodeEnd, - pd.toByteArray())); - } - - return textPlex.toByteArray(); - - } - - /** - * Adjust all the text piece after inserting - * some text into one of them - * @param listIndex The TextPiece that had characters inserted into - * @param length The number of characters inserted - */ - public int adjustForInsert(int listIndex, int length) { - int size = _textPieces.size(); - - TextPiece tp = (TextPiece)_textPieces.get(listIndex); - - // Update with the new end - tp.setEnd(tp.getEnd() + length); - - // Now change all subsequent ones - for (int x = listIndex + 1; x < size; x++) - { - tp = (TextPiece)_textPieces.get(x); - tp.setStart(tp.getStart() + length); - tp.setEnd(tp.getEnd() + length); - } - - // All done - return length; - } - - - public boolean equals(Object o) - { - TextPieceTable tpt = (TextPieceTable)o; - - int size = tpt._textPieces.size(); - if (size == _textPieces.size()) - { - for (int x = 0; x < size; x++) - { - if (!tpt._textPieces.get(x).equals(_textPieces.get(x))) - { - return false; - } - } - return true; - } - return false; - } - /* (non-Javadoc) - * @see org.apache.poi.hwpf.model.CharIndexTranslator#getLengthInChars(int) +public final class TextPieceTable implements CharIndexTranslator { + protected ArrayList _textPieces = new ArrayList(); + // int _multiple; + int _cpMin; + + public TextPieceTable() { + } + + public TextPieceTable(byte[] documentStream, byte[] tableStream, int offset, int size, int fcMin) { + // get our plex of PieceDescriptors + PlexOfCps pieceTable = new PlexOfCps(tableStream, offset, size, PieceDescriptor + .getSizeInBytes()); + + int length = pieceTable.length(); + PieceDescriptor[] pieces = new PieceDescriptor[length]; + + // iterate through piece descriptors raw bytes and create + // PieceDescriptor objects + for (int x = 0; x < length; x++) { + GenericPropertyNode node = pieceTable.getProperty(x); + pieces[x] = new PieceDescriptor(node.getBytes(), 0); + } + + // Figure out the cp of the earliest text piece + // Note that text pieces don't have to be stored in order! + _cpMin = pieces[0].getFilePosition() - fcMin; + for (int x = 0; x < pieces.length; x++) { + int start = pieces[x].getFilePosition() - fcMin; + if (start < _cpMin) { + _cpMin = start; + } + } + + // using the PieceDescriptors, build our list of TextPieces. + for (int x = 0; x < pieces.length; x++) { + int start = pieces[x].getFilePosition(); + PropertyNode node = pieceTable.getProperty(x); + + // Grab the start and end, which are in characters + int nodeStartChars = node.getStart(); + int nodeEndChars = node.getEnd(); + + // What's the relationship between bytes and characters? + boolean unicode = pieces[x].isUnicode(); + int multiple = 1; + if (unicode) { + multiple = 2; + } + + // Figure out the length, in bytes and chars + int textSizeChars = (nodeEndChars - nodeStartChars); + int textSizeBytes = textSizeChars * multiple; + + // Grab the data that makes up the piece + byte[] buf = new byte[textSizeBytes]; + System.arraycopy(documentStream, start, buf, 0, textSizeBytes); + + // And now build the piece + _textPieces.add(new TextPiece(nodeStartChars, nodeEndChars, buf, pieces[x], node + .getStart())); + } + + // In the interest of our sanity, now sort the text pieces + // into order, if they're not already + TextPiece[] tp = (TextPiece[]) _textPieces.toArray(new TextPiece[_textPieces.size()]); + Arrays.sort(tp); + for (int i = 0; i < tp.length; i++) { + _textPieces.set(i, tp[i]); + } + } + + public int getCpMin() { + return _cpMin; + } + + public List getTextPieces() { + return _textPieces; + } + + /** + * Is the text at the given Character offset unicode, or plain old ascii? In + * a very evil fashion, you have to actually know this to make sense of + * character and paragraph properties :( + * + * @param cp + * The character offset to check about + */ + public boolean isUnicodeAtCharOffset(int cp) { + boolean lastWas = false; + + Iterator it = _textPieces.iterator(); + while (it.hasNext()) { + TextPiece tp = (TextPiece) it.next(); + // If the text piece covers the character, all good + if (tp.getStart() <= cp && tp.getEnd() >= cp) { + return tp.isUnicode(); + } + // Otherwise keep track for the last one + lastWas = tp.isUnicode(); + } + + // If they ask off the end, just go with the last one... + return lastWas; + } + + public boolean isUnicodeAtByteOffset(int bytePos) { + boolean lastWas = false; + + Iterator it = _textPieces.iterator(); + while (it.hasNext()) { + TextPiece tp = (TextPiece) it.next(); + int curByte = tp.getPieceDescriptor().getFilePosition(); + int pieceEnd = curByte + tp.bytesLength(); + + // If the text piece covers the character, all good + if (curByte <= bytePos && pieceEnd > bytePos) { + return tp.isUnicode(); + } + // Otherwise keep track for the last one + lastWas = tp.isUnicode(); + // Move along + curByte = pieceEnd; + } + + // If they ask off the end, just go with the last one... + return lastWas; + } + + public byte[] writeTo(HWPFOutputStream docStream) throws IOException { + + PlexOfCps textPlex = new PlexOfCps(PieceDescriptor.getSizeInBytes()); + // int fcMin = docStream.getOffset(); + + int size = _textPieces.size(); + for (int x = 0; x < size; x++) { + TextPiece next = (TextPiece) _textPieces.get(x); + PieceDescriptor pd = next.getPieceDescriptor(); + + int offset = docStream.getOffset(); + int mod = (offset % POIFSConstants.BIG_BLOCK_SIZE); + if (mod != 0) { + mod = POIFSConstants.BIG_BLOCK_SIZE - mod; + byte[] buf = new byte[mod]; + docStream.write(buf); + } + + // set the text piece position to the current docStream offset. + pd.setFilePosition(docStream.getOffset()); + + // write the text to the docstream and save the piece descriptor to + // the + // plex which will be written later to the tableStream. + docStream.write(next.getRawBytes()); + + // The TextPiece is already in characters, which + // makes our life much easier + int nodeStart = next.getStart(); + int nodeEnd = next.getEnd(); + textPlex.addProperty(new GenericPropertyNode(nodeStart, nodeEnd, pd.toByteArray())); + } + + return textPlex.toByteArray(); + + } + + /** + * Adjust all the text piece after inserting some text into one of them + * + * @param listIndex + * The TextPiece that had characters inserted into + * @param length + * The number of characters inserted */ + public int adjustForInsert(int listIndex, int length) { + int size = _textPieces.size(); + + TextPiece tp = (TextPiece) _textPieces.get(listIndex); + + // Update with the new end + tp.setEnd(tp.getEnd() + length); + + // Now change all subsequent ones + for (int x = listIndex + 1; x < size; x++) { + tp = (TextPiece) _textPieces.get(x); + tp.setStart(tp.getStart() + length); + tp.setEnd(tp.getEnd() + length); + } + + // All done + return length; + } + + public boolean equals(Object o) { + TextPieceTable tpt = (TextPieceTable) o; + + int size = tpt._textPieces.size(); + if (size == _textPieces.size()) { + for (int x = 0; x < size; x++) { + if (!tpt._textPieces.get(x).equals(_textPieces.get(x))) { + return false; + } + } + return true; + } + return false; + } + public int getCharIndex(int bytePos) { int charCount = 0; @@ -272,15 +247,14 @@ public final class TextPieceTable implements CharIndexTranslator while (it.hasNext()) { TextPiece tp = (TextPiece) it.next(); int pieceStart = tp.getPieceDescriptor().getFilePosition(); - if(pieceStart >= bytePos) { + if (pieceStart >= bytePos) { break; } - + int bytesLength = tp.bytesLength(); int pieceEnd = pieceStart + bytesLength; - int toAdd = bytePos > pieceEnd ? bytesLength : bytesLength - - (pieceEnd - bytePos); + int toAdd = bytePos > pieceEnd ? bytesLength : bytesLength - (pieceEnd - bytePos); if (tp.isUnicode()) { charCount += toAdd / 2; @@ -291,5 +265,5 @@ public final class TextPieceTable implements CharIndexTranslator return charCount; } - + } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java b/src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java index fad6c7e462..de5896ea40 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java @@ -19,13 +19,12 @@ package org.apache.poi.hwpf.model.types; +import org.apache.poi.hdf.model.hdftypes.HDFType; +import org.apache.poi.hwpf.usermodel.BorderCode; +import org.apache.poi.hwpf.usermodel.DateAndTime; +import org.apache.poi.hwpf.usermodel.ShadingDescriptor; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; -import org.apache.poi.hdf.model.hdftypes.HDFType; -import org.apache.poi.hwpf.usermodel.*; /** * Character Properties. diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/types/DOPAbstractType.java b/src/scratchpad/src/org/apache/poi/hwpf/model/types/DOPAbstractType.java index 9f7b04c95a..d7530196ab 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/types/DOPAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/types/DOPAbstractType.java @@ -18,25 +18,19 @@ package org.apache.poi.hwpf.model.types; - +import org.apache.poi.hdf.model.hdftypes.HDFType; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; -import org.apache.poi.hdf.model.hdftypes.HDFType; -import org.apache.poi.hwpf.usermodel.*; /** * Document Properties. * NOTE: This source is automatically generated please do not modify this file. Either subclass or * remove the record in src/records/definitions. - + * * @author S. Ryan Ackley */ -public abstract class DOPAbstractType - implements HDFType -{ +public abstract class DOPAbstractType implements HDFType { protected byte field_1_formatFlags; private static BitField fFacingPages = BitFieldFactory.getInstance(0x01); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/types/FIBAbstractType.java b/src/scratchpad/src/org/apache/poi/hwpf/model/types/FIBAbstractType.java index 554d342ace..eebde48268 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/types/FIBAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/types/FIBAbstractType.java @@ -18,25 +18,19 @@ package org.apache.poi.hwpf.model.types; - +import org.apache.poi.hdf.model.hdftypes.HDFType; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; -import org.apache.poi.hdf.model.hdftypes.HDFType; -import org.apache.poi.hwpf.usermodel.*; /** * Base part of the File information Block (FibBase). Holds the core part of the FIB, from the first 32 bytes. * NOTE: This source is automatically generated please do not modify this file. Either subclass or * remove the record in src/records/definitions. - + * * @author Andrew C. Oliver */ -public abstract class FIBAbstractType - implements HDFType -{ +public abstract class FIBAbstractType implements HDFType { protected int field_1_wIdent; protected int field_2_nFib; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/types/PAPAbstractType.java b/src/scratchpad/src/org/apache/poi/hwpf/model/types/PAPAbstractType.java index 70460caaca..158edb34e9 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/types/PAPAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/types/PAPAbstractType.java @@ -18,25 +18,19 @@ package org.apache.poi.hwpf.model.types; - -import org.apache.poi.util.BitField; -import org.apache.poi.util.BitFieldFactory; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; import org.apache.poi.hdf.model.hdftypes.HDFType; import org.apache.poi.hwpf.usermodel.*; +import org.apache.poi.util.BitField; +import org.apache.poi.util.BitFieldFactory; /** * Paragraph Properties. * NOTE: This source is automatically generated please do not modify this file. Either subclass or * remove the record in src/records/definitions. - + * * @author S. Ryan Ackley */ -public abstract class PAPAbstractType - implements HDFType -{ +public abstract class PAPAbstractType implements HDFType { protected int field_1_istd; protected byte field_2_jc; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/types/SEPAbstractType.java b/src/scratchpad/src/org/apache/poi/hwpf/model/types/SEPAbstractType.java index d1548f73b8..b1856cd5c2 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/types/SEPAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/types/SEPAbstractType.java @@ -18,24 +18,18 @@ package org.apache.poi.hwpf.model.types; - -import org.apache.poi.util.BitField; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; import org.apache.poi.hdf.model.hdftypes.HDFType; -import org.apache.poi.hwpf.usermodel.*; +import org.apache.poi.hwpf.usermodel.BorderCode; +import org.apache.poi.hwpf.usermodel.DateAndTime; /** * Section Properties. * NOTE: This source is automatically generated please do not modify this file. Either subclass or * remove the record in src/records/definitions. - + * * @author S. Ryan Ackley */ -public abstract class SEPAbstractType - implements HDFType -{ +public abstract class SEPAbstractType implements HDFType { protected byte field_1_bkc; protected boolean field_2_fTitlePage; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/types/TAPAbstractType.java b/src/scratchpad/src/org/apache/poi/hwpf/model/types/TAPAbstractType.java index f1de3e114b..2230b4816b 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/types/TAPAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/types/TAPAbstractType.java @@ -18,24 +18,19 @@ package org.apache.poi.hwpf.model.types; - -import org.apache.poi.util.BitField; -import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; import org.apache.poi.hdf.model.hdftypes.HDFType; -import org.apache.poi.hwpf.usermodel.*; +import org.apache.poi.hwpf.usermodel.BorderCode; +import org.apache.poi.hwpf.usermodel.ShadingDescriptor; +import org.apache.poi.hwpf.usermodel.TableCellDescriptor; /** * Table Properties. * NOTE: This source is automatically generated please do not modify this file. Either subclass or * remove the record in src/records/definitions. - + * * @author S. Ryan Ackley */ -public abstract class TAPAbstractType - implements HDFType -{ +public abstract class TAPAbstractType implements HDFType { protected int field_1_jc; protected int field_2_dxaGapHalf; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/types/TCAbstractType.java b/src/scratchpad/src/org/apache/poi/hwpf/model/types/TCAbstractType.java index e7b97ee4ff..d5a993566b 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/types/TCAbstractType.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/types/TCAbstractType.java @@ -18,12 +18,9 @@ package org.apache.poi.hwpf.model.types; - import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.LittleEndian; -import org.apache.poi.util.StringUtil; -import org.apache.poi.util.HexDump; import org.apache.poi.hdf.model.hdftypes.HDFType; import org.apache.poi.hwpf.usermodel.*; @@ -34,9 +31,7 @@ import org.apache.poi.hwpf.usermodel.*; * @author S. Ryan Ackley */ -public abstract class TCAbstractType - implements HDFType -{ +public abstract class TCAbstractType implements HDFType { protected short field_1_rgf; private static BitField fFirstMerged = BitFieldFactory.getInstance(0x0001); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmCompressor.java b/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmCompressor.java index 2938df8ab6..9f65d0d485 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmCompressor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmCompressor.java @@ -18,8 +18,6 @@ package org.apache.poi.hwpf.sprm; import java.util.ArrayList; -import java.util.List; -import java.util.Arrays; import org.apache.poi.hwpf.usermodel.CharacterProperties; import org.apache.poi.util.LittleEndian; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmUncompressor.java b/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmUncompressor.java index aa98920966..7dabf810f9 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmUncompressor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/sprm/CharacterSprmUncompressor.java @@ -21,7 +21,6 @@ import org.apache.poi.hwpf.usermodel.CharacterProperties; import org.apache.poi.hwpf.usermodel.DateAndTime; import org.apache.poi.hwpf.usermodel.BorderCode; import org.apache.poi.hwpf.usermodel.ShadingDescriptor; -import org.apache.poi.hwpf.model.StyleSheet; import org.apache.poi.util.LittleEndian; public final class CharacterSprmUncompressor diff --git a/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmCompressor.java b/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmCompressor.java index c3e48d5226..67af3ecca0 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmCompressor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmCompressor.java @@ -34,7 +34,7 @@ public final class ParagraphSprmCompressor public static byte[] compressParagraphProperty(ParagraphProperties newPAP, ParagraphProperties oldPAP) { - ArrayList sprmList = new ArrayList(); + List sprmList = new ArrayList(); int size = 0; if (newPAP.getJc() != oldPAP.getJc()) diff --git a/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java b/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java index 235f435c2c..e8de893a2e 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/sprm/ParagraphSprmUncompressor.java @@ -26,7 +26,6 @@ import org.apache.poi.hwpf.usermodel.DropCapSpecifier; import org.apache.poi.util.LittleEndian; import java.util.HashMap; -import java.util.Set; import java.util.Iterator; import java.util.Collections; import java.util.ArrayList; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/sprm/SectionSprmCompressor.java b/src/scratchpad/src/org/apache/poi/hwpf/sprm/SectionSprmCompressor.java index ad47cdfdc0..aa7502a41e 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/sprm/SectionSprmCompressor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/sprm/SectionSprmCompressor.java @@ -17,229 +17,9 @@ package org.apache.poi.hwpf.sprm; -// -//import java.util.ArrayList; -//import java.util.Arrays; -// -//import org.apache.poi.hwpf.model.types.SEPAbstractType; -//import org.apache.poi.hwpf.usermodel.SectionProperties; -//import org.apache.poi.util.LittleEndian; -// -// -//public class SectionSprmCompressor -//{ -// private final static SectionProperties DEFAULT_SEP = new SectionProperties(); -// public SectionSprmCompressor() -// { -// } -// public static byte[] compressSectionProperty(SectionProperties newSEP, -// SectionProperties oldSEP) -// { -// int size = 0; -// ArrayList sprmList = new ArrayList(); -// -// if (newSEP.getCnsPgn() != DEFAULT_SEP.getCnsPgn()) -// { -// size += SprmUtils.addSprm((short)0x3000, newSEP.getCnsPgn(), null, sprmList); -// } -// if (newSEP.getIHeadingPgn() != DEFAULT_SEP.getIHeadingPgn()) -// { -// size += SprmUtils.addSprm((short)0x3001, newSEP.getIHeadingPgn(), null, sprmList); -// } -// if (!Arrays.equals(newSEP.getOlstAnm(), DEFAULT_SEP.getOlstAnm())) -// { -// size += SprmUtils.addSprm((short)0xD202, 0, newSEP.getOlstAnm(), sprmList); -// } -// if (newSEP.getFEvenlySpaced() != DEFAULT_SEP.getFEvenlySpaced()) -// { -// size += SprmUtils.addSprm((short)0x3005, newSEP.getFEvenlySpaced() ? 1 : 0, null, sprmList); -// } -// if (newSEP.getFUnlocked() != DEFAULT_SEP.getFUnlocked()) -// { -// size += SprmUtils.addSprm((short)0x3006, newSEP.getFUnlocked() ? 1 :0, null, sprmList); -// } -// if (newSEP.getDmBinFirst() != DEFAULT_SEP.getDmBinFirst()) -// { -// size += SprmUtils.addSprm((short)0x5007, newSEP.getDmBinFirst(), null, sprmList); -// } -// if (newSEP.getDmBinOther() != DEFAULT_SEP.getDmBinOther()) -// { -// size += SprmUtils.addSprm((short)0x5008, newSEP.getDmBinOther(), null, sprmList); -// } -// if (newSEP.getBkc() != DEFAULT_SEP.getBkc()) -// { -// size += SprmUtils.addSprm((short)0x3009, newSEP.getBkc(), null, sprmList); -// } -// if (newSEP.getFTitlePage() != DEFAULT_SEP.getFTitlePage()) -// { -// size += SprmUtils.addSprm((short)0x300A, newSEP.getFTitlePage() ? 1 : 0, null, sprmList); -// } -// if (newSEP.getCcolM1() != DEFAULT_SEP.getCcolM1()) -// { -// size += SprmUtils.addSprm((short)0x500B, newSEP.getCcolM1(), null, sprmList); -// } -// if (newSEP.getDxaColumns() != DEFAULT_SEP.getDxaColumns()) -// { -// size += SprmUtils.addSprm((short)0x900C, newSEP.getDxaColumns(), null, sprmList); -// } -// if (newSEP.getFAutoPgn() != DEFAULT_SEP.getFAutoPgn()) -// { -// size += SprmUtils.addSprm((short)0x300D, newSEP.getFAutoPgn() ? 1 : 0, null, sprmList); -// } -// if (newSEP.getNfcPgn() != DEFAULT_SEP.getNfcPgn()) -// { -// size += SprmUtils.addSprm((short)0x300E, newSEP.getNfcPgn(), null, sprmList); -// } -// if (newSEP.getDyaPgn() != DEFAULT_SEP.getDyaPgn()) -// { -// size += SprmUtils.addSprm((short)0xB00F, newSEP.getDyaPgn(), null, sprmList); -// } -// if (newSEP.getDxaPgn() != DEFAULT_SEP.getDxaPgn()) -// { -// size += SprmUtils.addSprm((short)0xB010, newSEP.getDxaPgn(), null, sprmList); -// } -// if (newSEP.getFPgnRestart() != DEFAULT_SEP.getFPgnRestart()) -// { -// size += SprmUtils.addSprm((short)0x3011, newSEP.getFPgnRestart() ? 1 : 0, null, sprmList); -// } -// if (newSEP.getFEndNote() != DEFAULT_SEP.getFEndNote()) -// { -// size += SprmUtils.addSprm((short)0x3012, newSEP.getFEndNote() ? 1 : 0, null, sprmList); -// } -// if (newSEP.getLnc() != DEFAULT_SEP.getLnc()) -// { -// size += SprmUtils.addSprm((short)0x3013, newSEP.getLnc(), null, sprmList); -// } -// if (newSEP.getGrpfIhdt() != DEFAULT_SEP.getGrpfIhdt()) -// { -// size += SprmUtils.addSprm((short)0x3014, newSEP.getGrpfIhdt(), null, sprmList); -// } -// if (newSEP.getNLnnMod() != DEFAULT_SEP.getNLnnMod()) -// { -// size += SprmUtils.addSprm((short)0x5015, newSEP.getNLnnMod(), null, sprmList); -// } -// if (newSEP.getDxaLnn() != DEFAULT_SEP.getDxaLnn()) -// { -// size += SprmUtils.addSprm((short)0x9016, newSEP.getDxaLnn(), null, sprmList); -// } -// if (newSEP.getDyaHdrTop() != DEFAULT_SEP.getDyaHdrTop()) -// { -// size += SprmUtils.addSprm((short)0xB017, newSEP.getDyaHdrTop(), null, sprmList); -// } -// if (newSEP.getDyaHdrBottom() != DEFAULT_SEP.getDyaHdrBottom()) -// { -// size += SprmUtils.addSprm((short)0xB018, newSEP.getDyaHdrBottom(), null, sprmList); -// } -// if (newSEP.getFLBetween() != DEFAULT_SEP.getFLBetween()) -// { -// size += SprmUtils.addSprm((short)0x3019, newSEP.getFLBetween() ? 1 : 0, null, sprmList); -// } -// if (newSEP.getVjc() != DEFAULT_SEP.getVjc()) -// { -// size += SprmUtils.addSprm((short)0x301A, newSEP.getVjc(), null, sprmList); -// } -// if (newSEP.getLnnMin() != DEFAULT_SEP.getLnnMin()) -// { -// size += SprmUtils.addSprm((short)0x501B, newSEP.getLnnMin(), null, sprmList); -// } -// if (newSEP.getPgnStart() != DEFAULT_SEP.getPgnStart()) -// { -// size += SprmUtils.addSprm((short)0x501C, newSEP.getPgnStart(), null, sprmList); -// } -// if (newSEP.getDmOrientPage() != DEFAULT_SEP.getDmOrientPage()) -// { -// size += SprmUtils.addSprm((short)0x301D, newSEP.getDmOrientPage(), null, sprmList); -// } -// if (newSEP.getXaPage() != DEFAULT_SEP.getXaPage()) -// { -// size += SprmUtils.addSprm((short)0xB01F, newSEP.getXaPage(), null, sprmList); -// } -// if (newSEP.getYaPage() != DEFAULT_SEP.getYaPage()) -// { -// size += SprmUtils.addSprm((short)0xB020, newSEP.getYaPage(), null, sprmList); -// } -// if (newSEP.getDxaLeft() != DEFAULT_SEP.getDxaLeft()) -// { -// size += SprmUtils.addSprm((short)0xB021, newSEP.getDxaLeft(), null, sprmList); -// } -// if (newSEP.getDxaRight() != DEFAULT_SEP.getDxaRight()) -// { -// size += SprmUtils.addSprm((short)0xB022, newSEP.getDxaRight(), null, sprmList); -// } -// if (newSEP.getDyaTop() != DEFAULT_SEP.getDyaTop()) -// { -// size += SprmUtils.addSprm((short)0x9023, newSEP.getDyaTop(), null, sprmList); -// } -// if (newSEP.getDyaBottom() != DEFAULT_SEP.getDyaBottom()) -// { -// size += SprmUtils.addSprm((short)0x9024, newSEP.getDyaBottom(), null, sprmList); -// } -// if (newSEP.getDzaGutter() != DEFAULT_SEP.getDzaGutter()) -// { -// size += SprmUtils.addSprm((short)0xB025, newSEP.getDzaGutter(), null, sprmList); -// } -// if (newSEP.getDmPaperReq() != DEFAULT_SEP.getDmPaperReq()) -// { -// size += SprmUtils.addSprm((short)0x5026, newSEP.getDmPaperReq(), null, sprmList); -// } -// if (newSEP.getFPropMark() != DEFAULT_SEP.getFPropMark() || -// newSEP.getIbstPropRMark() != DEFAULT_SEP.getIbstPropRMark() || -// newSEP.getDttmPropRMark() != DEFAULT_SEP.getDttmPropRMark()) -// { -// byte[] buf = new byte[7]; -// buf[0] = (byte)(newSEP.getFPropMark() ? 1 : 0); -// int offset = LittleEndian.BYTE_SIZE; -// LittleEndian.putShort(buf, (short)newSEP.getIbstPropRMark()); -// offset += LittleEndian.SHORT_SIZE; -// LittleEndian.putInt(buf, newSEP.getDttmPropRMark()); -// size += SprmUtils.addSprm((short)0xD227, -1, buf, sprmList); -// } -// if (!Arrays.equals(newSEP.getBrcTop(), DEFAULT_SEP.getBrcTop())) -// { -// size += SprmUtils.addSprm((short)0x702B, SprmUtils.convertBrcToInt(newSEP.getBrcTop()), null, sprmList); -// } -// if (!Arrays.equals(newSEP.getBrcLeft(), DEFAULT_SEP.getBrcLeft())) -// { -// size += SprmUtils.addSprm((short)0x702C, SprmUtils.convertBrcToInt(newSEP.getBrcLeft()), null, sprmList); -// } -// if (!Arrays.equals(newSEP.getBrcBottom(), DEFAULT_SEP.getBrcBottom())) -// { -// size += SprmUtils.addSprm((short)0x702D, SprmUtils.convertBrcToInt(newSEP.getBrcBottom()), null, sprmList); -// } -// if (!Arrays.equals(newSEP.getBrcRight(), DEFAULT_SEP.getBrcRight())) -// { -// size += SprmUtils.addSprm((short)0x702E, SprmUtils.convertBrcToInt(newSEP.getBrcRight()), null, sprmList); -// } -// if (newSEP.getPgbProp() != DEFAULT_SEP.getPgbProp()) -// { -// size += SprmUtils.addSprm((short)0x522F, newSEP.getPgbProp(), null, sprmList); -// } -// if (newSEP.getDxtCharSpace() != DEFAULT_SEP.getDxtCharSpace()) -// { -// size += SprmUtils.addSprm((short)0x7030, newSEP.getDxtCharSpace(), null, sprmList); -// } -// if (newSEP.getDyaLinePitch() != DEFAULT_SEP.getDyaLinePitch()) -// { -// size += SprmUtils.addSprm((short)0x9031, newSEP.getDyaLinePitch(), null, sprmList); -// } -// if (newSEP.getClm() != DEFAULT_SEP.getClm()) -// { -// size += SprmUtils.addSprm((short)0x5032, newSEP.getClm(), null, sprmList); -// } -// if (newSEP.getWTextFlow() != DEFAULT_SEP.getWTextFlow()) -// { -// size += SprmUtils.addSprm((short)0x5033, newSEP.getWTextFlow(), null, sprmList); -// } -// -// return SprmUtils.getGrpprl(sprmList, size); -// } -//} - - import java.util.ArrayList; import java.util.Arrays; -import org.apache.poi.hwpf.model.types.SEPAbstractType; import org.apache.poi.hwpf.usermodel.SectionProperties; import org.apache.poi.util.LittleEndian; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmCompressor.java b/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmCompressor.java index 13580fa090..65af98fae4 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmCompressor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmCompressor.java @@ -20,7 +20,6 @@ package org.apache.poi.hwpf.sprm; import org.apache.poi.hwpf.usermodel.TableProperties; import org.apache.poi.util.LittleEndian; import org.apache.poi.hwpf.usermodel.TableCellDescriptor; -import org.apache.poi.hwpf.usermodel.ShadingDescriptor; import org.apache.poi.hwpf.usermodel.BorderCode; import java.util.ArrayList; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BorderCode.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BorderCode.java index ff5191e781..52747c17e6 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BorderCode.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/BorderCode.java @@ -17,13 +17,9 @@ package org.apache.poi.hwpf.usermodel; -import org.apache.poi.util.BitField; -import org.apache.poi.util.BitFieldFactory; import org.apache.poi.util.LittleEndian; -public final class BorderCode - implements Cloneable -{ +public final class BorderCode implements Cloneable { public static final int SIZE = 4; private short _info; private short _info2; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/HWPFList.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/HWPFList.java index 91c993fd7a..a9a95c6b4f 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/HWPFList.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/HWPFList.java @@ -17,8 +17,6 @@ package org.apache.poi.hwpf.usermodel; -import org.apache.poi.hwpf.HWPFDocument; -import org.apache.poi.hwpf.model.ListTables; import org.apache.poi.hwpf.model.ListLevel; import org.apache.poi.hwpf.model.ListData; import org.apache.poi.hwpf.model.ListFormatOverride; @@ -43,8 +41,7 @@ import org.apache.poi.hwpf.sprm.ParagraphSprmCompressor; * * @author Ryan Ackley */ -public final class HWPFList -{ +public final class HWPFList { private ListData _listData; private ListFormatOverride _override; private boolean _registered; diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ParagraphProperties.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ParagraphProperties.java index 167d0837d4..8944eb0600 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ParagraphProperties.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ParagraphProperties.java @@ -18,14 +18,8 @@ package org.apache.poi.hwpf.usermodel; import org.apache.poi.hwpf.model.types.PAPAbstractType; -import org.apache.poi.hwpf.model.StyleDescription; -import org.apache.poi.hwpf.sprm.SprmBuffer; - -public final class ParagraphProperties - extends PAPAbstractType - implements Cloneable -{ +public final class ParagraphProperties extends PAPAbstractType implements Cloneable { public ParagraphProperties() { @@ -313,14 +307,14 @@ public final class ParagraphProperties { ParagraphProperties pp = (ParagraphProperties)super.clone(); pp.field_21_lspd = (LineSpacingDescriptor)field_21_lspd.clone(); - pp.field_24_phe = (byte[])field_24_phe.clone(); + pp.field_24_phe = field_24_phe.clone(); pp.field_46_brcTop = (BorderCode)field_46_brcTop.clone(); pp.field_47_brcLeft = (BorderCode)field_47_brcLeft.clone(); pp.field_48_brcBottom = (BorderCode)field_48_brcBottom.clone(); pp.field_49_brcRight = (BorderCode)field_49_brcRight.clone(); pp.field_50_brcBetween = (BorderCode)field_50_brcBetween.clone(); pp.field_51_brcBar = (BorderCode)field_51_brcBar.clone(); - pp.field_60_anld = (byte[])field_60_anld.clone(); + pp.field_60_anld = field_60_anld.clone(); return pp; } diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableIterator.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableIterator.java index f19a340351..9f2e208e76 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableIterator.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/TableIterator.java @@ -18,8 +18,6 @@ package org.apache.poi.hwpf.usermodel; -import java.util.ArrayList; - public final class TableIterator { Range _range; @@ -56,7 +54,6 @@ public final class TableIterator public Table next() { int numParagraphs = _range.numParagraphs(); - int numRows = 0; int startIndex = _index; int endIndex = _index; diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/TestEncryptedFile.java b/src/scratchpad/testcases/org/apache/poi/hslf/TestEncryptedFile.java index 6daeab1b20..892cb81387 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/TestEncryptedFile.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/TestEncryptedFile.java @@ -21,7 +21,6 @@ package org.apache.poi.hslf; import junit.framework.TestCase; import org.apache.poi.hslf.exceptions.EncryptedPowerPointFileException; -import org.apache.poi.hslf.record.*; /** * Tests that HSLFSlideShow does the right thing with an encrypted file @@ -39,41 +38,41 @@ public final class TestEncryptedFile extends TestCase { private String ss_56_e; - public TestEncryptedFile() throws Exception { + public TestEncryptedFile() { String dirname = System.getProperty("HSLF.testdata.path"); ss_ne = dirname + "/basic_test_ppt_file.ppt"; ss_e = dirname + "/Password_Protected-hello.ppt"; ss_np_e = dirname + "/Password_Protected-np-hello.ppt"; ss_56_e = dirname + "/Password_Protected-56-hello.ppt"; - } + } - public void testLoadNonEncrypted() throws Exception { - HSLFSlideShow hss = new HSLFSlideShow(ss_ne); + public void testLoadNonEncrypted() throws Exception { + HSLFSlideShow hss = new HSLFSlideShow(ss_ne); - assertNotNull(hss); - } + assertNotNull(hss); + } - public void testLoadEncrypted() throws Exception { - try { - new HSLFSlideShow(ss_e); - fail(); - } catch(EncryptedPowerPointFileException e) { - // Good - } + public void testLoadEncrypted() throws Exception { + try { + new HSLFSlideShow(ss_e); + fail(); + } catch(EncryptedPowerPointFileException e) { + // Good + } - try { - new HSLFSlideShow(ss_np_e); - fail(); - } catch(EncryptedPowerPointFileException e) { - // Good - } + try { + new HSLFSlideShow(ss_np_e); + fail(); + } catch(EncryptedPowerPointFileException e) { + // Good + } - try { - new HSLFSlideShow(ss_56_e); - fail(); - } catch(EncryptedPowerPointFileException e) { - // Good - } - } + try { + new HSLFSlideShow(ss_56_e); + fail(); + } catch(EncryptedPowerPointFileException e) { + // Good + } + } } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestFreeform.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestFreeform.java index 77a58844de..73e31e5755 100755 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestFreeform.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestFreeform.java @@ -17,19 +17,12 @@ package org.apache.poi.hslf.model; +import java.awt.geom.Area; +import java.awt.geom.GeneralPath; +import java.awt.geom.Line2D; +import java.awt.geom.Rectangle2D; + import junit.framework.TestCase; -import org.apache.poi.hslf.usermodel.SlideShow; -import org.apache.poi.hslf.usermodel.RichTextRun; -import org.apache.poi.hslf.HSLFSlideShow; - -import java.awt.*; -import java.awt.Rectangle; -import java.awt.geom.*; -import java.io.ByteArrayOutputStream; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; /** * Test Freeform object. @@ -41,7 +34,7 @@ import java.util.ArrayList; */ public final class TestFreeform extends TestCase { - public void testClosedPath() throws Exception { + public void testClosedPath() { GeneralPath path1 = new GeneralPath(); path1.moveTo(100, 100); @@ -57,7 +50,7 @@ public final class TestFreeform extends TestCase { assertTrue(new Area(path1).equals(new Area(path2))); } - public void testLine() throws Exception { + public void testLine() { GeneralPath path1 = new GeneralPath(new Line2D.Double(100, 100, 200, 100)); @@ -68,7 +61,7 @@ public final class TestFreeform extends TestCase { assertTrue(new Area(path1).equals(new Area(path2))); } - public void testRectangle() throws Exception { + public void testRectangle() { GeneralPath path1 = new GeneralPath(new Rectangle2D.Double(100, 100, 200, 50)); diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestImagePainter.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestImagePainter.java index b230679bd3..9de8cad43e 100755 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestImagePainter.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestImagePainter.java @@ -17,18 +17,13 @@ package org.apache.poi.hslf.model; -import junit.framework.*; +import java.awt.Graphics2D; -import java.io.FileOutputStream; -import java.io.File; -import java.awt.*; +import junit.framework.TestCase; -import org.apache.poi.hslf.usermodel.SlideShow; -import org.apache.poi.hslf.usermodel.PictureData; -import org.apache.poi.hslf.HSLFSlideShow; -import org.apache.poi.hslf.blip.ImagePainter; import org.apache.poi.hslf.blip.BitmapPainter; -import org.apache.poi.ddf.EscherBSERecord; +import org.apache.poi.hslf.blip.ImagePainter; +import org.apache.poi.hslf.usermodel.PictureData; /** * Test Picture shape. @@ -37,22 +32,23 @@ import org.apache.poi.ddf.EscherBSERecord; */ public final class TestImagePainter extends TestCase { - private static class CustomImagePainer implements ImagePainter{ + private static class CustomImagePainter implements ImagePainter { + public CustomImagePainter() { + // no fields to initialise + } public void paint(Graphics2D graphics, PictureData pict, Picture parent){ //do noting } - } - public void testImagePainter() throws Exception { + public void testImagePainter() { ImagePainter pntr = PictureData.getImagePainter(Picture.PNG); assertTrue(PictureData.getImagePainter(Picture.PNG) instanceof BitmapPainter); assertTrue(PictureData.getImagePainter(Picture.JPEG) instanceof BitmapPainter); assertTrue(PictureData.getImagePainter(Picture.DIB) instanceof BitmapPainter); - PictureData.setImagePainter(Picture.WMF, new CustomImagePainer()); - assertTrue(PictureData.getImagePainter(Picture.WMF) instanceof CustomImagePainer); + PictureData.setImagePainter(Picture.WMF, new CustomImagePainter()); + assertTrue(PictureData.getImagePainter(Picture.WMF) instanceof CustomImagePainter); } - } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestLine.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestLine.java index 7e7c5d3b3b..735fa30466 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestLine.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestLine.java @@ -17,13 +17,11 @@ package org.apache.poi.hslf.model; -import junit.framework.*; +import java.awt.Color; -import java.io.FileOutputStream; -import java.awt.*; +import junit.framework.TestCase; import org.apache.poi.hslf.usermodel.SlideShow; -import org.apache.poi.hslf.HSLFSlideShow; /** * Test Line shape. @@ -32,11 +30,7 @@ import org.apache.poi.hslf.HSLFSlideShow; */ public final class TestLine extends TestCase { - public void setUp() throws Exception { - - } - - public void testCreateLines() throws Exception { + public void testCreateLines() { SlideShow ppt = new SlideShow(); Slide slide = ppt.createSlide(); @@ -129,7 +123,5 @@ public final class TestLine extends TestCase { line.setLineStyle(Line.LINE_DOUBLE); line.setLineWidth(8.0); slide.addShape(line); - } - } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestMovieShape.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestMovieShape.java index 8555bce983..8d2f704561 100755 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestMovieShape.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestMovieShape.java @@ -17,14 +17,14 @@ package org.apache.poi.hslf.model; -import junit.framework.TestCase; - -import java.io.*; -import java.awt.*; import java.awt.geom.Rectangle2D; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; + +import junit.framework.TestCase; import org.apache.poi.hslf.usermodel.SlideShow; -import org.apache.poi.hslf.HSLFSlideShow; /** * Test MovieShape object. @@ -61,7 +61,5 @@ public final class TestMovieShape extends TestCase { shape = (MovieShape)slide.getShapes()[0]; assertEquals(path, shape.getPath()); assertFalse(shape.isAutoPlay()); - } - } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestPicture.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestPicture.java index b3f5942f39..9d80f7dc72 100755 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestPicture.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestPicture.java @@ -17,18 +17,17 @@ package org.apache.poi.hslf.model; -import junit.framework.*; - -import java.io.FileOutputStream; +import java.awt.Graphics2D; +import java.awt.Rectangle; +import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; -import java.awt.*; -import java.awt.image.BufferedImage; -import org.apache.poi.hslf.usermodel.SlideShow; -import org.apache.poi.hslf.usermodel.PictureData; -import org.apache.poi.hslf.HSLFSlideShow; +import junit.framework.TestCase; + import org.apache.poi.ddf.EscherBSERecord; +import org.apache.poi.hslf.usermodel.PictureData; +import org.apache.poi.hslf.usermodel.SlideShow; /** * Test Picture shape. @@ -71,14 +70,13 @@ public final class TestPicture extends TestCase { EscherBSERecord bse3 = pict.getEscherBSERecord(); assertSame(bse2, bse3); assertEquals(3, bse1.getRef()); - } /** * Picture#getEscherBSERecord threw NullPointerException if EscherContainerRecord.BSTORE_CONTAINER * was not found. The correct behaviour is to return null. */ - public void test46122() throws IOException { + public void test46122() { SlideShow ppt = new SlideShow(); Slide slide = ppt.createSlide(); @@ -90,8 +88,5 @@ public final class TestPicture extends TestCase { BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = img.createGraphics(); pict.draw(graphics); - - assertTrue("no errors rendering Picture with null data", true); } - } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestSlideChangeNotes.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestSlideChangeNotes.java index a6b17ec41c..e39ca5a4d1 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestSlideChangeNotes.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestSlideChangeNotes.java @@ -19,10 +19,10 @@ package org.apache.poi.hslf.model; import junit.framework.TestCase; -import org.apache.poi.hslf.*; -import org.apache.poi.hslf.model.*; -import org.apache.poi.hslf.usermodel.*; + +import org.apache.poi.hslf.HSLFSlideShow; import org.apache.poi.hslf.record.SlideAtom; +import org.apache.poi.hslf.usermodel.SlideShow; /** * Tests that changing a slide's idea of what notes sheet is its works right @@ -33,23 +33,23 @@ public final class TestSlideChangeNotes extends TestCase { // SlideShow primed on the test data private SlideShow ss; - public TestSlideChangeNotes() throws Exception { + public TestSlideChangeNotes() throws Exception { String dirname = System.getProperty("HSLF.testdata.path"); String filename = dirname + "/basic_test_ppt_file.ppt"; HSLFSlideShow hss = new HSLFSlideShow(filename); ss = new SlideShow(hss); - } + } - public void testSetToNone() throws Exception { + public void testSetToNone() { Slide slideOne = ss.getSlides()[0]; SlideAtom sa = slideOne.getSlideRecord().getSlideAtom(); slideOne.setNotes(null); assertEquals(0, sa.getNotesID()); - } + } - public void testSetToSomething() throws Exception { + public void testSetToSomething() { Slide slideOne = ss.getSlides()[0]; Notes notesOne = ss.getNotes()[1]; SlideAtom sa = slideOne.getSlideRecord().getSlideAtom(); @@ -57,5 +57,5 @@ public final class TestSlideChangeNotes extends TestCase { slideOne.setNotes(notesOne); assertEquals(notesOne._getSheetNumber(), sa.getNotesID()); - } + } } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestSlideMaster.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestSlideMaster.java index 9799eb0069..20bdaa8a57 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestSlideMaster.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestSlideMaster.java @@ -17,17 +17,17 @@ package org.apache.poi.hslf.model; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; + import junit.framework.TestCase; -import org.apache.poi.hslf.usermodel.SlideShow; -import org.apache.poi.hslf.usermodel.RichTextRun; + import org.apache.poi.hslf.HSLFSlideShow; import org.apache.poi.hslf.model.textproperties.CharFlagsTextProp; -import org.apache.poi.hslf.record.*; -import org.apache.poi.hslf.record.StyleTextPropAtom.*; - -import java.io.ByteArrayOutputStream; -import java.io.ByteArrayInputStream; -import java.awt.*; +import org.apache.poi.hslf.record.Environment; +import org.apache.poi.hslf.record.TextHeaderAtom; +import org.apache.poi.hslf.usermodel.RichTextRun; +import org.apache.poi.hslf.usermodel.SlideShow; /** * Tests for SlideMaster @@ -37,7 +37,7 @@ import java.awt.*; public final class TestSlideMaster extends TestCase{ String home; - public void setUp() throws Exception { + public void setUp() { home = System.getProperty("HSLF.testdata.path"); } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTable.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTable.java index d3c10cbea1..e8f246bbd6 100755 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTable.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTable.java @@ -17,15 +17,13 @@ package org.apache.poi.hslf.model; -import junit.framework.TestCase; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; -import java.io.*; -import java.awt.*; -import java.awt.geom.Rectangle2D; +import junit.framework.TestCase; -import org.apache.poi.hslf.usermodel.SlideShow; -import org.apache.poi.hslf.HSLFSlideShow; import org.apache.poi.hslf.record.TextHeaderAtom; +import org.apache.poi.hslf.usermodel.SlideShow; /** * Test Table object. @@ -90,13 +88,13 @@ public final class TestTable extends TestCase { public void testIllegalCOnstruction(){ try { - Table tbl = new Table(0, 5); + new Table(0, 5); fail("Table(rownum, colnum) must throw IllegalArgumentException if any of tghe arguments is less than 1"); } catch (IllegalArgumentException e){ } try { - Table tbl = new Table(5, 0); + new Table(5, 0); fail("Table(rownum, colnum) must throw IllegalArgumentException if any of tghe arguments is less than 1"); } catch (IllegalArgumentException e){ diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestAnimationInfoAtom.java b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestAnimationInfoAtom.java index a8402a333a..c410e831c3 100755 --- a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestAnimationInfoAtom.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestAnimationInfoAtom.java @@ -22,8 +22,6 @@ import junit.framework.TestCase; import java.io.ByteArrayOutputStream; import java.util.Arrays; -import org.apache.poi.util.HexDump; - /** * Tests that {@link HeadersFootersAtom} works properly * @@ -43,7 +41,7 @@ public final class TestAnimationInfoAtom extends TestCase { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - public void testRead() throws Exception { + public void testRead() { AnimationInfoAtom record = new AnimationInfoAtom(data, 0, data.length); assertEquals(RecordTypes.AnimationInfoAtom.typeID, record.getRecordType()); assertTrue(record.getFlag(AnimationInfoAtom.Automatic)); @@ -84,5 +82,4 @@ public final class TestAnimationInfoAtom extends TestCase { assertTrue(Arrays.equals(data, b)); } - } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestCurrentUserAtom.java b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestCurrentUserAtom.java index 5d7355e585..8df159a32d 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestCurrentUserAtom.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestCurrentUserAtom.java @@ -22,12 +22,7 @@ import junit.framework.TestCase; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.Date; -import javax.imageio.stream.FileImageInputStream; - -import org.apache.poi.hslf.exceptions.CorruptPowerPointFileException; import org.apache.poi.hslf.exceptions.EncryptedPowerPointFileException; import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.POIFSFileSystem; diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestExHyperlink.java b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestExHyperlink.java index d559e542c3..18ae888ecd 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestExHyperlink.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestExHyperlink.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,18 +14,17 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - - package org.apache.poi.hslf.record; -import junit.framework.TestCase; import java.io.ByteArrayOutputStream; import java.io.File; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; +import java.util.List; + +import junit.framework.AssertionFailedError; +import junit.framework.TestCase; import org.apache.poi.hslf.HSLFSlideShow; import org.apache.poi.hslf.usermodel.SlideShow; @@ -36,52 +34,52 @@ import org.apache.poi.hslf.usermodel.SlideShow; * * @author Nick Burch (nick at torchbox dot com) */ -public class TestExHyperlink extends TestCase { +public final class TestExHyperlink extends TestCase { // From a real file private byte[] data_a = new byte[] { 0x0F, 00, 0xD7-256, 0x0F, 0xA8-256, 00, 00, 00, - - 00, 00, 0xD3-256, 0x0F, 04, 00, 00, 00, + + 00, 00, 0xD3-256, 0x0F, 04, 00, 00, 00, 03, 00, 00, 00, - - 00, 00, 0xBA-256, 0x0F, 0x46, 00, 00, 00, + + 00, 00, 0xBA-256, 0x0F, 0x46, 00, 00, 00, 0x68, 00, 0x74, 00, 0x74, 00, 0x70, 00, - 0x3A, 00, 0x2F, 00, 0x2F, 00, 0x6A, 00, + 0x3A, 00, 0x2F, 00, 0x2F, 00, 0x6A, 00, 0x61, 00, 0x6B, 00, 0x61, 00, 0x72, 00, 0x74, 00, 0x61, 00, 0x2E, 00, 0x61, 00, 0x70, 00, 0x61, 00, 0x63, 00, 0x68, 00, 0x65, 00, 0x2E, 00, 0x6F, 00, 0x72, 00, 0x67, 00, 0x2F, 00, 0x70, 00, 0x6F, 00, - 0x69, 00, 0x2F, 00, 0x68, 00, 0x73, 00, - 0x73, 00, 0x66, 00, 0x2F, 00, - + 0x69, 00, 0x2F, 00, 0x68, 00, 0x73, 00, + 0x73, 00, 0x66, 00, 0x2F, 00, + 0x10, 00, 0xBA-256, 0x0F, 0x46, 00, 00, 00, 0x68, 00, 0x74, 00, 0x74, 00, 0x70, 00, - 0x3A, 00, 0x2F, 00, 0x2F, 00, 0x6A, 00, + 0x3A, 00, 0x2F, 00, 0x2F, 00, 0x6A, 00, 0x61, 00, 0x6B, 00, 0x61, 00, 0x72, 00, 0x74, 00, 0x61, 00, 0x2E, 00, 0x61, 00, 0x70, 00, 0x61, 00, 0x63, 00, 0x68, 00, 0x65, 00, 0x2E, 00, 0x6F, 00, 0x72, 00, 0x67, 00, 0x2F, 00, 0x70, 00, 0x6F, 00, - 0x69, 00, 0x2F, 00, 0x68, 00, 0x73, 00, - 0x73, 00, 0x66, 00, 0x2F, 00 + 0x69, 00, 0x2F, 00, 0x68, 00, 0x73, 00, + 0x73, 00, 0x66, 00, 0x2F, 00 }; - - public void testRecordType() throws Exception { + + public void testRecordType() { ExHyperlink eh = new ExHyperlink(data_a, 0, data_a.length); assertEquals(4055l, eh.getRecordType()); } - - public void testNumber() throws Exception { + + public void testNumber() { ExHyperlink eh = new ExHyperlink(data_a, 0, data_a.length); assertEquals(3, eh.getExHyperlinkAtom().getNumber()); } - - public void testLinkURL() throws Exception { + + public void testLinkURL() { ExHyperlink eh = new ExHyperlink(data_a, 0, data_a.length); assertEquals("http://jakarta.apache.org/poi/hssf/", eh.getLinkURL()); } - public void testDetails() throws Exception { + public void testDetails() { ExHyperlink eh = new ExHyperlink(data_a, 0, data_a.length); assertEquals("http://jakarta.apache.org/poi/hssf/", eh._getDetailsA()); assertEquals("http://jakarta.apache.org/poi/hssf/", eh._getDetailsB()); @@ -98,12 +96,12 @@ public class TestExHyperlink extends TestCase { assertEquals(data_a[i],b[i]); } } - + public void testRealFile() throws Exception { String dirname = System.getProperty("HSLF.testdata.path"); HSLFSlideShow hss = new HSLFSlideShow(dirname + File.separator + "WithLinks.ppt"); SlideShow ss = new SlideShow(hss); - + // Get the document Document doc = ss.getDocumentRecord(); // Get the ExObjList @@ -113,37 +111,40 @@ public class TestExHyperlink extends TestCase { exObjList = (ExObjList)doc._children[i]; } } - assertNotNull(exObjList); - + if (exObjList == null) { + throw new AssertionFailedError("exObjList must not be null"); + } + // Within that, grab out the Hyperlink atoms - ArrayList linksA = new ArrayList(); + List linksA = new ArrayList(); for(int i=0; i */ - public void test45815() throws Exception { + public void test45815() { int length = 19; byte[] data = { 0x00, 0x00, (byte)0xA1, 0x0F, 0x5E, 0x00, 0x00, 0x00, 0x14, 0x00, diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextRulerAtom.java b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextRulerAtom.java index fa2f664e32..f9d1b83570 100755 --- a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextRulerAtom.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextRulerAtom.java @@ -17,19 +17,11 @@ package org.apache.poi.hslf.record; -import org.apache.poi.hslf.HSLFSlideShow; -import org.apache.poi.hslf.model.textproperties.CharFlagsTextProp; -import org.apache.poi.hslf.model.textproperties.TextProp; -import org.apache.poi.hslf.model.textproperties.TextPropCollection; -import org.apache.poi.hslf.record.StyleTextPropAtom.*; -import org.apache.poi.hslf.usermodel.SlideShow; -import org.apache.poi.util.HexDump; - -import junit.framework.TestCase; import java.io.ByteArrayOutputStream; -import java.util.LinkedList; import java.util.Arrays; +import junit.framework.TestCase; + /** * Tests TextRulerAtom * @@ -37,53 +29,51 @@ import java.util.Arrays; */ public final class TestTextRulerAtom extends TestCase { - //from a real file + //from a real file private byte[] data_1 = new byte[] { 0x00, 0x00, (byte)0xA6, 0x0F, 0x18, 0x00, 0x00, 0x00, - (byte)0xF8, 0x1F, 0x00, 0x00, 0x75, 0x00, (byte)0xE2, 0x00, 0x59, - 0x01, (byte)0xC3, 0x01, 0x1A, 0x03, (byte)0x87, 0x03, (byte)0xF8, - 0x03, 0x69, 0x04, (byte)0xF6, 0x05, (byte)0xF6, 0x05 + (byte)0xF8, 0x1F, 0x00, 0x00, 0x75, 0x00, (byte)0xE2, 0x00, 0x59, + 0x01, (byte)0xC3, 0x01, 0x1A, 0x03, (byte)0x87, 0x03, (byte)0xF8, + 0x03, 0x69, 0x04, (byte)0xF6, 0x05, (byte)0xF6, 0x05 }; - private byte[] data_2 = new byte[] { - 0x00, 0x00, (byte)0xA6, 0x0F, 0x0A, 0x00, 0x00, 0x00, - 0x10, 0x03, 0x00, 0x00, (byte)0xF9, 0x00, 0x41, 0x01, 0x41, 0x01 - }; + private byte[] data_2 = new byte[] { + 0x00, 0x00, (byte)0xA6, 0x0F, 0x0A, 0x00, 0x00, 0x00, + 0x10, 0x03, 0x00, 0x00, (byte)0xF9, 0x00, 0x41, 0x01, 0x41, 0x01 + }; - public void testReadRuler() throws Exception { + public void testReadRuler() { TextRulerAtom ruler = new TextRulerAtom(data_1, 0, data_1.length); - assertEquals(ruler.getNumberOfLevels(), 0); - assertEquals(ruler.getDefaultTabSize(), 0); + assertEquals(ruler.getNumberOfLevels(), 0); + assertEquals(ruler.getDefaultTabSize(), 0); - int[] tabStops = ruler.getTabStops(); - assertNull(tabStops); + int[] tabStops = ruler.getTabStops(); + assertNull(tabStops); - int[] textOffsets = ruler.getTextOffsets(); - assertTrue(Arrays.equals(new int[]{226, 451, 903, 1129, 1526}, textOffsets)); + int[] textOffsets = ruler.getTextOffsets(); + assertTrue(Arrays.equals(new int[]{226, 451, 903, 1129, 1526}, textOffsets)); - int[] bulletOffsets = ruler.getBulletOffsets(); - assertTrue(Arrays.equals(new int[]{117, 345, 794, 1016, 1526}, bulletOffsets)); + int[] bulletOffsets = ruler.getBulletOffsets(); + assertTrue(Arrays.equals(new int[]{117, 345, 794, 1016, 1526}, bulletOffsets)); } - public void testWriteRuler() throws Exception { + public void testWriteRuler() throws Exception { TextRulerAtom ruler = new TextRulerAtom(data_1, 0, data_1.length); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - ruler.writeOut(out); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + ruler.writeOut(out); - byte[] result = out.toByteArray(); - assertTrue(Arrays.equals(result, data_1)); + byte[] result = out.toByteArray(); + assertTrue(Arrays.equals(result, data_1)); } - public void testRead2() throws Exception { + public void testRead2() throws Exception { TextRulerAtom ruler = TextRulerAtom.getParagraphInstance(); - ruler.setParagraphIndent((short)249, (short)321); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - ruler.writeOut(out); - - byte[] result = out.toByteArray(); - assertTrue(Arrays.equals(result, data_2)); + ruler.setParagraphIndent((short)249, (short)321); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + ruler.writeOut(out); + byte[] result = out.toByteArray(); + assertTrue(Arrays.equals(result, data_2)); } - } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextSpecInfoAtom.java b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextSpecInfoAtom.java index 62fb5ee285..42626f5f41 100755 --- a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextSpecInfoAtom.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTextSpecInfoAtom.java @@ -17,19 +17,11 @@ package org.apache.poi.hslf.record; -import org.apache.poi.hslf.HSLFSlideShow; -import org.apache.poi.hslf.model.textproperties.CharFlagsTextProp; -import org.apache.poi.hslf.model.textproperties.TextProp; -import org.apache.poi.hslf.model.textproperties.TextPropCollection; -import org.apache.poi.hslf.record.StyleTextPropAtom.*; -import org.apache.poi.hslf.usermodel.SlideShow; -import org.apache.poi.util.HexDump; - -import junit.framework.TestCase; import java.io.ByteArrayOutputStream; -import java.util.LinkedList; import java.util.Arrays; +import junit.framework.TestCase; + /** * Tests TextSpecInfoAtom * @@ -38,17 +30,17 @@ import java.util.Arrays; public final class TestTextSpecInfoAtom extends TestCase { //from a real file - private byte[] data_1 = new byte[] { + private byte[] data_1 = new byte[] { 0x00, 0x00, (byte)0xAA, 0x0F, 0x2C, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; + }; - public void testRead() throws Exception { - TextSpecInfoAtom spec = new TextSpecInfoAtom(data_1, 0, data_1.length); + public void testRead() { + TextSpecInfoAtom spec = new TextSpecInfoAtom(data_1, 0, data_1.length); TextSpecInfoAtom.TextSpecInfoRun[] run = spec.getTextSpecInfoRuns(); assertEquals(5, run.length); diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTxInteractiveInfoAtom.java b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTxInteractiveInfoAtom.java index 9f3d575c22..4e3d07ade0 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTxInteractiveInfoAtom.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestTxInteractiveInfoAtom.java @@ -20,8 +20,6 @@ package org.apache.poi.hslf.record; import junit.framework.TestCase; import java.io.ByteArrayOutputStream; -import java.text.SimpleDateFormat; -import java.util.Date; /** * Tests that TxInteractiveInfoAtom works properly. @@ -35,24 +33,24 @@ public final class TestTxInteractiveInfoAtom extends TestCase { 0x19, 00, 00, 00, 0x38, 00, 00, 00 }; - private byte[] data_b = new byte[] { - 00, 00, (byte)0xDF, 0x0F, 0x08, 00, 00, 00, - 0x39, 00, 00, 00, 0x4E, 00, 00, 00 - }; + private byte[] data_b = new byte[] { + 00, 00, (byte)0xDF, 0x0F, 0x08, 00, 00, 00, + 0x39, 00, 00, 00, 0x4E, 00, 00, 00 + }; - public void testRead() throws Exception { - TxInteractiveInfoAtom ia1 = new TxInteractiveInfoAtom(data_a, 0, data_a.length); + public void testRead() { + TxInteractiveInfoAtom ia1 = new TxInteractiveInfoAtom(data_a, 0, data_a.length); - assertEquals(4063, ia1.getRecordType()); + assertEquals(4063, ia1.getRecordType()); assertEquals(25, ia1.getStartIndex()); assertEquals(56, ia1.getEndIndex()); - TxInteractiveInfoAtom ia2 = new TxInteractiveInfoAtom(data_b, 0, data_b.length); + TxInteractiveInfoAtom ia2 = new TxInteractiveInfoAtom(data_b, 0, data_b.length); - assertEquals(4063, ia2.getRecordType()); + assertEquals(4063, ia2.getRecordType()); assertEquals(57, ia2.getStartIndex()); assertEquals(78, ia2.getEndIndex()); - } + } public void testWrite() throws Exception { TxInteractiveInfoAtom atom = new TxInteractiveInfoAtom(data_a, 0, data_a.length); @@ -67,12 +65,12 @@ public final class TestTxInteractiveInfoAtom extends TestCase { } // Create A from scratch - public void testCreate() throws Exception { - TxInteractiveInfoAtom ia = new TxInteractiveInfoAtom(); + public void testCreate() throws Exception { + TxInteractiveInfoAtom ia = new TxInteractiveInfoAtom(); - // Set values - ia.setStartIndex(25); - ia.setEndIndex(56); + // Set values + ia.setStartIndex(25); + ia.setEndIndex(56); // Check it's now the same as a ByteArrayOutputStream baos = new ByteArrayOutputStream(); @@ -83,7 +81,7 @@ public final class TestTxInteractiveInfoAtom extends TestCase { for(int i=0; i lst = new ArrayList(); - Record[] core = _ppt.getMostRecentCoreRecords(); - for (int i = 0; i < core.length; i++) { - if(core[i].getRecordType() == RecordTypes.MainMaster.typeID){ - Record[] rec = core[i].getChildRecords(); + Record[] coreRecs = _ppt.getMostRecentCoreRecords(); + for (int i = 0; i < coreRecs.length; i++) { + Record coreRec = coreRecs[i]; + if(coreRec.getRecordType() == RecordTypes.MainMaster.typeID){ + Record[] recs = coreRec.getChildRecords(); int cnt = 0; - for (int j = 0; j < rec.length; j++) { - if (rec[j] instanceof TxMasterStyleAtom) { - lst.add(rec[j]); + for (int j = 0; j < recs.length; j++) { + Record rec = recs[j]; + if (rec instanceof TxMasterStyleAtom) { + lst.add((TxMasterStyleAtom) rec); cnt++; } } assertEquals("MainMaster must contain 7 TxMasterStyleAtoms ", 7, cnt); - } else if(core[i].getRecordType() == RecordTypes.Document.typeID){ + } else if(coreRec.getRecordType() == RecordTypes.Document.typeID){ TxMasterStyleAtom txstyle = null; - Document doc = (Document)core[i]; + Document doc = (Document)coreRec; Record[] rec = doc.getEnvironment().getChildRecords(); for (int j = 0; j < rec.length; j++) { if (rec[j] instanceof TxMasterStyleAtom) { @@ -223,7 +226,9 @@ public final class TestTxMasterStyleAtom extends TestCase { txstyle = (TxMasterStyleAtom)rec[j]; } } - assertNotNull("TxMasterStyleAtom not found in Document.Environment", txstyle); + if (txstyle == null) { + throw new AssertionFailedError("TxMasterStyleAtom not found in Document.Environment"); + } assertEquals("Document.Environment must contain TxMasterStyleAtom with type=TextHeaderAtom.OTHER_TYPE", TextHeaderAtom.OTHER_TYPE, txstyle.getTextType()); @@ -231,6 +236,6 @@ public final class TestTxMasterStyleAtom extends TestCase { } } - return (TxMasterStyleAtom[])lst.toArray(new TxMasterStyleAtom[lst.size()]); + return lst.toArray(new TxMasterStyleAtom[lst.size()]); } } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java index 742131a935..3ab57adcd3 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java @@ -17,17 +17,33 @@ package org.apache.poi.hslf.usermodel; +import java.io.File; +import java.io.FileInputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import junit.framework.AssertionFailedError; import junit.framework.TestCase; + import org.apache.poi.hslf.HSLFSlideShow; import org.apache.poi.hslf.exceptions.OldPowerPointFormatException; -import org.apache.poi.hslf.model.*; +import org.apache.poi.hslf.model.Background; +import org.apache.poi.hslf.model.Fill; +import org.apache.poi.hslf.model.MasterSheet; +import org.apache.poi.hslf.model.Notes; +import org.apache.poi.hslf.model.Picture; import org.apache.poi.hslf.model.Shape; - -import java.io.*; -import java.util.HashSet; -import java.util.HashMap; -import java.util.ArrayList; -import java.awt.*; +import org.apache.poi.hslf.model.ShapeGroup; +import org.apache.poi.hslf.model.Slide; +import org.apache.poi.hslf.model.SlideMaster; +import org.apache.poi.hslf.model.TextBox; +import org.apache.poi.hslf.model.TextRun; +import org.apache.poi.hslf.model.TextShape; +import org.apache.poi.hslf.model.TitleMaster; /** * Testcases for bugs entered in bugzilla @@ -99,7 +115,7 @@ public final class TestBugs extends TestCase { SlideShow ppt = new SlideShow(hslf); //map slide number and starting phrase of its notes - HashMap notesMap = new HashMap(); + Map notesMap = new HashMap(); notesMap.put(new Integer(4), "For decades before calculators"); notesMap.put(new Integer(5), "Several commercial applications"); notesMap.put(new Integer(6), "There are three variations of LNS that are discussed here"); @@ -113,7 +129,7 @@ public final class TestBugs extends TestCase { if (notesMap.containsKey(slideNumber)){ assertNotNull(notes); String text = notes.getTextRuns()[0].getRawText(); - String startingPhrase = (String)notesMap.get(slideNumber); + String startingPhrase = notesMap.get(slideNumber); assertTrue("Notes for slide " + slideNumber + " must start with " + startingPhrase , text.startsWith(startingPhrase)); } @@ -287,7 +303,7 @@ public final class TestBugs extends TestCase { TextRun[] runs = slide[0].getTextRuns(); assertEquals(4, runs.length); - HashSet txt = new HashSet(); + Set txt = new HashSet(); txt.add("\u201CHAPPY BIRTHDAY SCOTT\u201D"); txt.add("Have a HAPPY DAY"); txt.add("PS Nobody is allowed to hassle Scott TODAY\u2026"); @@ -314,12 +330,14 @@ public final class TestBugs extends TestCase { Slide slide = ppt.getSlides()[0]; TextRun[] tr1 = slide.getTextRuns(); - ArrayList lst = new ArrayList(); + List lst = new ArrayList(); Shape[] shape = slide.getShapes(); for (int i = 0; i < shape.length; i++) { if( shape[i] instanceof TextShape){ TextRun textRun = ((TextShape)shape[i]).getTextRun(); - if(textRun != null) lst.add(textRun); + if(textRun != null) { + lst.add(textRun); + } } } @@ -356,10 +374,15 @@ public final class TestBugs extends TestCase { */ public void test44770() throws Exception { FileInputStream is = new FileInputStream(new File(cwd, "44770.ppt")); - SlideShow ppt = new SlideShow(is); + try { + new SlideShow(is); + } catch (RuntimeException e) { + if (e.getMessage().equals("Couldn't instantiate the class for type with id 1036 on class class org.apache.poi.hslf.record.PPDrawing")) { + throw new AssertionFailedError("Identified bug 44770"); + } + throw e; + } is.close(); - - assertTrue("No Exceptions while reading file", true); } /** diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRecordSetup.java b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRecordSetup.java index c5f3063fe8..da04a33d10 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRecordSetup.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRecordSetup.java @@ -20,7 +20,6 @@ package org.apache.poi.hslf.usermodel; import junit.framework.TestCase; import org.apache.poi.hslf.*; -import org.apache.poi.hslf.model.*; import org.apache.poi.hslf.record.ParentAwareRecord; import org.apache.poi.hslf.record.Record; import org.apache.poi.hslf.record.RecordContainer; diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestSoundData.java b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestSoundData.java index eea37695c4..8b7c4c21f4 100755 --- a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestSoundData.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestSoundData.java @@ -17,15 +17,12 @@ package org.apache.poi.hslf.usermodel; -import org.apache.poi.hslf.*; -import org.apache.poi.hslf.exceptions.HSLFException; -import org.apache.poi.hslf.blip.*; -import org.apache.poi.hslf.model.*; -import junit.framework.TestCase; - -import java.io.*; +import java.io.File; +import java.io.FileInputStream; import java.util.Arrays; +import junit.framework.TestCase; + /** * Test reading sound data from a ppt * @@ -35,7 +32,7 @@ public final class TestSoundData extends TestCase{ protected File cwd; - public void setUp() throws Exception { + public void setUp() { cwd = new File(System.getProperty("HSLF.testdata.path")); } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestSavedByTable.java b/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestSavedByTable.java index c2607f1ac3..bc36e0d40c 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestSavedByTable.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestSavedByTable.java @@ -18,12 +18,12 @@ package org.apache.poi.hwpf.model; import java.io.*; -import java.util.*; -import junit.framework.*; +import java.util.Arrays; +import java.util.List; -import org.apache.poi.hwpf.*; -import org.apache.poi.hwpf.model.*; -import org.apache.poi.util.*; +import junit.framework.TestCase; + +import org.apache.poi.hwpf.HWPFDocument; /** * Unit test for {@link SavedByTable} and {@link SavedByEntry}. diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java index 2dd669e7c3..0f2034de49 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java @@ -35,132 +35,128 @@ import org.apache.poi.util.LittleEndian; public final class TestPictures extends TestCase { private String dirname = System.getProperty("HWPF.testdata.path"); - protected void setUp() throws Exception { - } - - /** - * two jpegs - */ - public void testTwoImages() throws Exception { - HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/two_images.doc")); - List pics = doc.getPicturesTable().getAllPictures(); - - assertNotNull(pics); - assertEquals(pics.size(), 2); - for(int i=0; i 128); - - // Check right contents - byte[] emf = loadImage("vector_image.emf"); - byte[] pemf = pic.getContent(); - assertEquals(emf.length, pemf.length); - for(int i=0; i -1 ) { - b.write(buf, 0, read); - } - return b.toByteArray(); - } + + /** + * two jpegs + */ + public void testTwoImages() throws Exception { + HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/two_images.doc")); + List pics = doc.getPicturesTable().getAllPictures(); + + assertNotNull(pics); + assertEquals(pics.size(), 2); + for(int i=0; i 128); + + // Check right contents + byte[] emf = loadImage("vector_image.emf"); + byte[] pemf = pic.getContent(); + assertEquals(emf.length, pemf.length); + for(int i=0; i -1 ) { + b.write(buf, 0, read); + } + return b.toByteArray(); + } } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestShapes.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestShapes.java index 7749e77224..b237da0ca3 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestShapes.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestShapes.java @@ -19,7 +19,6 @@ package org.apache.poi.hwpf.usermodel; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.File; import java.io.FileInputStream; import java.util.List; @@ -33,11 +32,11 @@ import org.apache.poi.hwpf.HWPFDocument; public final class TestShapes extends TestCase { private String dirname = System.getProperty("HWPF.testdata.path"); - /** - * two shapes, second is a group - */ - public void testShapes() throws Exception { - HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/WithArtShapes.doc")); + /** + * two shapes, second is a group + */ + public void testShapes() throws Exception { + HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/WithArtShapes.doc")); List shapes = doc.getShapesTable().getAllShapes(); List vshapes = doc.getShapesTable().getVisibleShapes(); @@ -79,6 +78,5 @@ public final class TestShapes extends TestCase { assertEquals(4817, s2.getWidth()); assertEquals(2164, s2.getHeight()); assertEquals(true, s2.isWithinDocument()); - - } + } } diff --git a/src/testcases/org/apache/poi/ddf/TestEscherOptRecord.java b/src/testcases/org/apache/poi/ddf/TestEscherOptRecord.java index a96ba84968..975a8b5ff7 100644 --- a/src/testcases/org/apache/poi/ddf/TestEscherOptRecord.java +++ b/src/testcases/org/apache/poi/ddf/TestEscherOptRecord.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,18 +14,16 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - + package org.apache.poi.ddf; import junit.framework.TestCase; import org.apache.poi.util.HexRead; import org.apache.poi.util.HexDump; -import java.io.IOException; import java.util.Arrays; -public class TestEscherOptRecord extends TestCase -{ +public final class TestEscherOptRecord extends TestCase { public void testFillFields() { checkFillFieldsSimple(); @@ -151,93 +148,93 @@ public class TestEscherOptRecord extends TestCase } /** - * Test serialisation of a particually complex example + * Test serialisation of a particually complex example * This test is currently broken! */ public void testComplexSerialise() { byte[] data = { - 0x53, 0x01, 0x0B, 0xF0-256, 0x9C-256, 0x01, 0x00, 0x00, + 0x53, 0x01, 0x0B, 0xF0-256, 0x9C-256, 0x01, 0x00, 0x00, // Simple data follows 0x42, 0x01, 0x49, 0x00, 0x00, 0x00, // SP @ 8 0x43, 0x01, 0x85-256, 0x00, 0x00, 0x00, // SP @ 14 0x44, 0x01, 0x04, 0x00, 0x00, 0x00, // SP @ 20 0x45, 0xC1-256, 0x88-256, 0x00, 0x00, 0x00, // SP @ 26 0x46, 0xC1-256, 0x90-256, 0x00, 0x00, 0x00, // SP @ 32 - 0x7F, 0x01, 0x01, 0x00, 0x01, 0x00, - 0x80-256, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x81-256, 0x01, 0x02, 0x00, 0x00, 0x08, - 0xBF-256, 0x01, 0x10, 0x00, 0x10, 0x00, - 0xC0-256, 0x01, 0x01, 0x00, 0x00, 0x08, // SP 10 + 0x7F, 0x01, 0x01, 0x00, 0x01, 0x00, + 0x80-256, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x81-256, 0x01, 0x02, 0x00, 0x00, 0x08, + 0xBF-256, 0x01, 0x10, 0x00, 0x10, 0x00, + 0xC0-256, 0x01, 0x01, 0x00, 0x00, 0x08, // SP 10 0xC1-256, 0x01, 0x00, 0x00, 0x01, 0x00, - 0xC4-256, 0x01, 0x00, 0x00, 0x00, 0x00, - 0xCB-256, 0x01, 0x38, 0x63, 0x00, 0x00, - 0xCD-256, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xC4-256, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xCB-256, 0x01, 0x38, 0x63, 0x00, 0x00, + 0xCD-256, 0x01, 0x00, 0x00, 0x00, 0x00, 0xCE-256, 0x01, 0x00, 0x00, 0x00, 0x00, // SP 15 - 0xD0-256, 0x01, 0x00, 0x00, 0x00, 0x00, - 0xD1-256, 0x01, 0x00, 0x00, 0x00, 0x00, - 0xD7-256, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xD0-256, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xD1-256, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xD7-256, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF-256, 0x01, 0x18, 0x00, 0x18, 0x00, - 0x01, 0x02, 0x02, 0x00, 0x00, 0x08, + 0x01, 0x02, 0x02, 0x00, 0x00, 0x08, 0x3F, 0x02, 0x00, 0x00, 0x02, 0x00, // SP 21 - + // Complex data follows - + // Complex data for Array #325 // Array header - 0x22, 0x00, 0x22, 0x00, 0xF0-256, 0xFF-256, + 0x22, 0x00, 0x22, 0x00, 0xF0-256, 0xFF-256, // Array data - 0x18, 0x00, 0x28, 0x00, 0x04, 0x00, 0x34, + 0x18, 0x00, 0x28, 0x00, 0x04, 0x00, 0x34, 0x00, 0x04, 0x00, 0x28, 0x00, 0x04, 0x00, - 0x1C, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x04, 0x00, 0x10, + 0x1C, 0x00, 0x04, 0x00, 0x10, 0x00, 0x04, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x1C, 0x00, - 0x04, 0x00, 0x28, 0x00, 0x10, 0x00, 0x34, 0x00, 0x18, 0x00, 0x3C, + 0x04, 0x00, 0x28, 0x00, 0x10, 0x00, 0x34, 0x00, 0x18, 0x00, 0x3C, 0x00, 0x24, 0x00, 0x44, 0x00, - 0x30, 0x00, 0x48, 0x00, 0x3C, 0x00, 0x44, 0x00, 0x48, 0x00, 0x3C, + 0x30, 0x00, 0x48, 0x00, 0x3C, 0x00, 0x44, 0x00, 0x48, 0x00, 0x3C, 0x00, 0x54, 0x00, 0x38, 0x00, - 0x60, 0x00, 0x2C, 0x00, 0x70, 0x00, 0x20, 0x00, 0x78, 0x00, + 0x60, 0x00, 0x2C, 0x00, 0x70, 0x00, 0x20, 0x00, 0x78, 0x00, 0x14, 0x00, 0x80-256, 0x00, 0x08, 0x00, - 0x84-256, 0x00, 0x04, 0x00, 0x78, 0x00, 0x04, 0x00, 0x6C, 0x00, + 0x84-256, 0x00, 0x04, 0x00, 0x78, 0x00, 0x04, 0x00, 0x6C, 0x00, 0x04, 0x00, 0x60, 0x00, 0x04, 0x00, - 0x54, 0x00, 0x08, 0x00, 0x48, 0x00, 0x0C, 0x00, 0x3C, 0x00, 0x0C, + 0x54, 0x00, 0x08, 0x00, 0x48, 0x00, 0x0C, 0x00, 0x3C, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x08, 0x00, - 0x3C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x08, 0x00, 0x54, 0x00, 0x00, + 0x3C, 0x00, 0x08, 0x00, 0x48, 0x00, 0x08, 0x00, 0x54, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x30, 0x00, 0x04, 0x00, 0x24, 0x00, // Complex data for Array #326 // Array header - 0x45, 0x00, 0x48, 0x00, 0x02, 0x00, + 0x45, 0x00, 0x48, 0x00, 0x02, 0x00, // Array data - 0x00, 0x40, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, + 0x00, 0x40, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, - 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, + 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, - 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, + 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, - 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, + 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, - 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, + 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, - 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, + 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, - 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, + 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, - 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, + 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x01, 0x00, 0x00, 0xB0-256, 0x00, 0x80-256 }; - + // Create the record EscherOptRecord r = new EscherOptRecord(); int filled = r.fillFields( data, new DefaultEscherRecordFactory() ); - + // Check it's the right length assertEquals(data.length, filled); assertEquals(data.length, r.getRecordSize()); - + // Serialise it byte[] dest = new byte[data.length]; int written = r.serialize(0, dest); - + // Check it serialised it back to the same data assertEquals(data.length, written); for(int i=0; i - * + * * There are probably many ways to produce similar effects, but it should be noted that Excel * is quite temperamental in this regard. Slight variations in technique can cause the shared * formulas to spill out into plain formula records (which would make these tests pointless). - * + * */ private static final String SAMPLE_FILE_NAME = "overlapSharedFormula.xls"; /** - * Some of these bugs are intermittent, and the test author couldn't think of a way to write + * Some of these bugs are intermittent, and the test author couldn't think of a way to write * test code to hit them bug deterministically. The reason for the unpredictability is that * the bugs depended on the {@link SharedFormulaRecord}s being searched in a particular order. - * At the time of writing of the test, the order was being determined by the call to {@link - * Collection#toArray(Object[])} on {@link HashMap#values()} where the items in the map were + * At the time of writing of the test, the order was being determined by the call to {@link + * Collection#toArray(Object[])} on {@link HashMap#values()} where the items in the map were * using default {@link Object#hashCode()}
*/ private static final int MAX_ATTEMPTS=5; @@ -67,24 +64,24 @@ public final class TestSharedValueManager extends TestCase { * This bug happened when there were two or more shared formula ranges that overlapped. POI * would sometimes associate formulas in the overlapping region with the wrong shared formula */ - public void testPartiallyOverlappingRanges() throws IOException { + public void testPartiallyOverlappingRanges() { Record[] records; int attempt=1; do { - HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook(SAMPLE_FILE_NAME); - - HSSFSheet sheet = wb.getSheetAt(0); - RecordInspector.getRecords(sheet, 0); - assertEquals("1+1", sheet.getRow(2).getCell(0).getCellFormula()); - if ("1+1".equals(sheet.getRow(3).getCell(0).getCellFormula())) { - throw new AssertionFailedError("Identified bug - wrong shared formula record chosen" - + " (attempt " + attempt + ")"); - } - assertEquals("2+2", sheet.getRow(3).getCell(0).getCellFormula()); - records = RecordInspector.getRecords(sheet, 0); + HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook(SAMPLE_FILE_NAME); + + HSSFSheet sheet = wb.getSheetAt(0); + RecordInspector.getRecords(sheet, 0); + assertEquals("1+1", sheet.getRow(2).getCell(0).getCellFormula()); + if ("1+1".equals(sheet.getRow(3).getCell(0).getCellFormula())) { + throw new AssertionFailedError("Identified bug - wrong shared formula record chosen" + + " (attempt " + attempt + ")"); + } + assertEquals("2+2", sheet.getRow(3).getCell(0).getCellFormula()); + records = RecordInspector.getRecords(sheet, 0); } while (attempt++ < MAX_ATTEMPTS); - + int count=0; for (int i = 0; i < records.length; i++) { if (records[i] instanceof SharedFormulaRecord) { @@ -93,28 +90,28 @@ public final class TestSharedValueManager extends TestCase { } assertEquals(2, count); } - + /** * This bug occurs for similar reasons to the bug in {@link #testPartiallyOverlappingRanges()} * but the symptoms are much uglier - serialization fails with {@link NullPointerException}.
*/ - public void testCompletelyOverlappedRanges() throws IOException { + public void testCompletelyOverlappedRanges() { Record[] records; int attempt=1; do { - HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook(SAMPLE_FILE_NAME); - - HSSFSheet sheet = wb.getSheetAt(1); - try { - records = RecordInspector.getRecords(sheet, 0); - } catch (NullPointerException e) { - throw new AssertionFailedError("Identified bug " + - "- cannot reserialize completely overlapped shared formula" - + " (attempt " + attempt + ")"); - } + HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook(SAMPLE_FILE_NAME); + + HSSFSheet sheet = wb.getSheetAt(1); + try { + records = RecordInspector.getRecords(sheet, 0); + } catch (NullPointerException e) { + throw new AssertionFailedError("Identified bug " + + "- cannot reserialize completely overlapped shared formula" + + " (attempt " + attempt + ")"); + } } while (attempt++ < MAX_ATTEMPTS); - + int count=0; for (int i = 0; i < records.length; i++) { if (records[i] instanceof SharedFormulaRecord) { diff --git a/src/testcases/org/apache/poi/hssf/record/formula/AbstractPtgTestCase.java b/src/testcases/org/apache/poi/hssf/record/formula/AbstractPtgTestCase.java index db29380a9c..f2b7cd2e14 100644 --- a/src/testcases/org/apache/poi/hssf/record/formula/AbstractPtgTestCase.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/AbstractPtgTestCase.java @@ -17,18 +17,10 @@ package org.apache.poi.hssf.record.formula; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; - import junit.framework.TestCase; import org.apache.poi.hssf.HSSFTestDataSamples; -import org.apache.poi.hssf.model.Workbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * Convenient abstract class to reduce the amount of boilerplate code needed diff --git a/src/testcases/org/apache/poi/hssf/record/formula/TestArrayPtg.java b/src/testcases/org/apache/poi/hssf/record/formula/TestArrayPtg.java index 5dab4cca14..586fa60003 100644 --- a/src/testcases/org/apache/poi/hssf/record/formula/TestArrayPtg.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/TestArrayPtg.java @@ -19,26 +19,24 @@ package org.apache.poi.hssf.record.formula; import java.util.Arrays; +import junit.framework.AssertionFailedError; +import junit.framework.TestCase; + import org.apache.poi.hssf.HSSFTestDataSamples; -import org.apache.poi.hssf.record.RecordInputStream; import org.apache.poi.hssf.record.TestcaseRecordInputStream; -import org.apache.poi.hssf.record.UnicodeString; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.util.LittleEndianByteArrayOutputStream; import org.apache.poi.util.LittleEndianInput; - -import junit.framework.AssertionFailedError; -import junit.framework.TestCase; /** * Tests for ArrayPtg - * + * * @author Josh Micich */ public final class TestArrayPtg extends TestCase { private static final byte[] ENCODED_PTG_DATA = { 0x40, - 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, }; private static final byte[] ENCODED_CONSTANT_DATA = { 2, // 3 columns @@ -52,28 +50,28 @@ public final class TestArrayPtg extends TestCase { }; /** - * Lots of problems with ArrayPtg's encoding of + * Lots of problems with ArrayPtg's encoding of */ public void testReadWriteTokenValueBytes() { - + ArrayPtg ptg = new ArrayPtg(TestcaseRecordInputStream.createLittleEndian(ENCODED_PTG_DATA)); - + ptg.readTokenValues(TestcaseRecordInputStream.createLittleEndian(ENCODED_CONSTANT_DATA)); assertEquals(3, ptg.getColumnCount()); assertEquals(2, ptg.getRowCount()); Object[][] values = ptg.getTokenArrayValues(); assertEquals(2, values.length); - - + + assertEquals(Boolean.TRUE, values[0][0]); assertEquals("ABCD", values[0][1]); assertEquals(new Double(0), values[1][0]); assertEquals(Boolean.FALSE, values[1][1]); assertEquals("FG", values[1][2]); - + byte[] outBuf = new byte[ENCODED_CONSTANT_DATA.length]; ptg.writeTokenValueBytes(new LittleEndianByteArrayOutputStream(outBuf, 0)); - + if(outBuf[0] == 4) { throw new AssertionFailedError("Identified bug 42564b"); } @@ -88,7 +86,7 @@ public final class TestArrayPtg extends TestCase { ptg.readTokenValues(TestcaseRecordInputStream.createLittleEndian(ENCODED_CONSTANT_DATA)); assertEquals(3, ptg.getColumnCount()); assertEquals(2, ptg.getRowCount()); - + assertEquals(0, ptg.getValueIndex(0, 0)); assertEquals(1, ptg.getValueIndex(1, 0)); assertEquals(2, ptg.getValueIndex(2, 0)); @@ -96,7 +94,7 @@ public final class TestArrayPtg extends TestCase { assertEquals(4, ptg.getValueIndex(1, 1)); assertEquals(5, ptg.getValueIndex(2, 1)); } - + /** * Test for a bug which was temporarily introduced by the fix for bug 42564. * A spreadsheet was added to make the ordering clearer. @@ -104,7 +102,7 @@ public final class TestArrayPtg extends TestCase { public void testElementOrderingInSpreadsheet() { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("ex42564-elementOrder.xls"); - // The formula has an array with 3 rows and 5 columns + // The formula has an array with 3 rows and 5 columns String formula = wb.getSheetAt(0).getRow(0).getCell(0).getCellFormula(); // TODO - These number literals should not have '.0'. Excel has different number rendering rules @@ -116,9 +114,9 @@ public final class TestArrayPtg extends TestCase { public void testToFormulaString() { ArrayPtg ptg = new ArrayPtg(TestcaseRecordInputStream.createLittleEndian(ENCODED_PTG_DATA)); - + ptg.readTokenValues(TestcaseRecordInputStream.createLittleEndian(ENCODED_CONSTANT_DATA)); - + String actualFormula; try { actualFormula = ptg.toFormulaString(); @@ -130,7 +128,7 @@ public final class TestArrayPtg extends TestCase { } assertEquals("{TRUE,\"ABCD\",\"E\";0.0,FALSE,\"FG\"}", actualFormula); } - + /** * worth checking since AttrPtg.sid=0x20 and Ptg.CLASS_* = (0x00, 0x20, and 0x40) */ @@ -145,11 +143,11 @@ public final class TestArrayPtg extends TestCase { System.arraycopy(ENCODED_PTG_DATA, 0, fullData, 0, ENCODED_PTG_DATA.length); System.arraycopy(ENCODED_CONSTANT_DATA, 0, fullData, ENCODED_PTG_DATA.length, ENCODED_CONSTANT_DATA.length); - // Force encoded operand class for tArray + // Force encoded operand class for tArray fullData[0] = (byte) (ArrayPtg.sid + operandClass); - + LittleEndianInput in = TestcaseRecordInputStream.createLittleEndian(fullData); - + Ptg[] ptgs = Ptg.readTokens(ENCODED_PTG_DATA.length, in); assertEquals(1, ptgs.length); ArrayPtg aPtg = (ArrayPtg) ptgs[0]; diff --git a/src/testcases/org/apache/poi/hssf/record/formula/eval/TestCircularReferences.java b/src/testcases/org/apache/poi/hssf/record/formula/eval/TestCircularReferences.java index fb11b4c1b6..878b7bdaec 100755 --- a/src/testcases/org/apache/poi/hssf/record/formula/eval/TestCircularReferences.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/eval/TestCircularReferences.java @@ -27,10 +27,9 @@ import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellValue; -import org.apache.poi.ss.usermodel.ErrorConstants; /** * Tests HSSFFormulaEvaluator for its handling of cell formula circular references. - * + * * @author Josh Micich */ public final class TestCircularReferences extends TestCase { @@ -53,17 +52,17 @@ public final class TestCircularReferences extends TestCase { assertTrue(cellValue.getCellType() == HSSFCell.CELL_TYPE_ERROR); assertEquals(ErrorEval.CIRCULAR_REF_ERROR.getErrorCode(), cellValue.getErrorValue()); } - - + + /** - * ASF Bugzilla Bug 44413 - * "INDEX() formula cannot contain its own location in the data array range" + * ASF Bugzilla Bug 44413 + * "INDEX() formula cannot contain its own location in the data array range" */ public void testIndexFormula() { - + HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("Sheet1"); - + int colB = 1; sheet.createRow(0).createCell(colB).setCellValue(1); sheet.createRow(1).createCell(colB).setCellValue(2); @@ -73,13 +72,13 @@ public final class TestCircularReferences extends TestCase { // This formula should evaluate to the contents of B2, testCell.setCellFormula("INDEX(A1:B4,2,2)"); // However the range A1:B4 also includes the current cell A4. If the other parameters - // were 4 and 1, this would represent a circular reference. Prior to v3.2 POI would + // were 4 and 1, this would represent a circular reference. Prior to v3.2 POI would // 'fully' evaluate ref arguments before invoking operators, which raised the possibility of // cycles / StackOverflowErrors. - + CellValue cellValue = evaluateWithCycles(wb, testCell); - + assertTrue(cellValue.getCellType() == HSSFCell.CELL_TYPE_NUMERIC); assertEquals(2, cellValue.getNumberValue(), 0); } @@ -88,16 +87,16 @@ public final class TestCircularReferences extends TestCase { * Cell A1 has formula "=A1" */ public void testSimpleCircularReference() { - + HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("Sheet1"); - + HSSFRow row = sheet.createRow(0); HSSFCell testCell = row.createCell(0); testCell.setCellFormula("A1"); CellValue cellValue = evaluateWithCycles(wb, testCell); - + confirmCycleErrorCode(cellValue); } @@ -105,10 +104,10 @@ public final class TestCircularReferences extends TestCase { * A1=B1, B1=C1, C1=D1, D1=A1 */ public void testMultiLevelCircularReference() { - + HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("Sheet1"); - + HSSFRow row = sheet.createRow(0); row.createCell(0).setCellFormula("B1"); row.createCell(1).setCellFormula("C1"); @@ -117,39 +116,39 @@ public final class TestCircularReferences extends TestCase { testCell.setCellFormula("A1"); CellValue cellValue = evaluateWithCycles(wb, testCell); - + confirmCycleErrorCode(cellValue); } - + public void testIntermediateCircularReferenceResults_bug46898() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("Sheet1"); - + HSSFRow row = sheet.createRow(0); - + HSSFCell cellA1 = row.createCell(0); HSSFCell cellB1 = row.createCell(1); HSSFCell cellC1 = row.createCell(2); HSSFCell cellD1 = row.createCell(3); HSSFCell cellE1 = row.createCell(4); - + cellA1.setCellFormula("IF(FALSE, 1+B1, 42)"); cellB1.setCellFormula("1+C1"); cellC1.setCellFormula("1+D1"); cellD1.setCellFormula("1+E1"); cellE1.setCellFormula("1+A1"); - + HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb); CellValue cv; - - // Happy day flow - evaluate A1 first + + // Happy day flow - evaluate A1 first cv = fe.evaluate(cellA1); assertEquals(Cell.CELL_TYPE_NUMERIC, cv.getCellType()); assertEquals(42.0, cv.getNumberValue(), 0.0); cv = fe.evaluate(cellB1); // no circ-ref-error because A1 result is cached assertEquals(Cell.CELL_TYPE_NUMERIC, cv.getCellType()); assertEquals(46.0, cv.getNumberValue(), 0.0); - + // Show the bug - evaluate another cell from the loop first fe.clearAllCachedResultValues(); cv = fe.evaluate(cellB1); @@ -164,7 +163,7 @@ public final class TestCircularReferences extends TestCase { cv = fe.evaluate(cellE1); assertEquals(Cell.CELL_TYPE_NUMERIC, cv.getCellType()); assertEquals(43.0, cv.getNumberValue(), 0.0); - - + + } } diff --git a/src/testcases/org/apache/poi/hssf/record/formula/functions/NumericFunctionInvoker.java b/src/testcases/org/apache/poi/hssf/record/formula/functions/NumericFunctionInvoker.java index 694d679977..31b45f622c 100755 --- a/src/testcases/org/apache/poi/hssf/record/formula/functions/NumericFunctionInvoker.java +++ b/src/testcases/org/apache/poi/hssf/record/formula/functions/NumericFunctionInvoker.java @@ -20,7 +20,6 @@ package org.apache.poi.hssf.record.formula.functions; import junit.framework.AssertionFailedError; import org.apache.poi.hssf.record.formula.eval.ErrorEval; -import org.apache.poi.hssf.record.formula.eval.ValueEval; import org.apache.poi.hssf.record.formula.eval.NumericValueEval; import org.apache.poi.hssf.record.formula.eval.OperationEval; import org.apache.poi.hssf.record.formula.eval.ValueEval; diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java b/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java index 4704b3ed84..1f276b7765 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,19 +14,17 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.hssf.usermodel; import junit.framework.TestCase; import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.ss.util.Region; /** - * Test the ability to clone a sheet. + * Test the ability to clone a sheet. * If adding new records that belong to a sheet (as opposed to a book) - * add that record to the sheet in the testCloneSheetBasic method. + * add that record to the sheet in the testCloneSheetBasic method. * @author avik */ public final class TestCloneSheet extends TestCase { @@ -37,26 +34,25 @@ public final class TestCloneSheet extends TestCase { HSSFSheet s = b.createSheet("Test"); s.addMergedRegion(new CellRangeAddress(0, 1, 0, 1)); HSSFSheet clonedSheet = b.cloneSheet(0); - + assertEquals("One merged area", 1, clonedSheet.getNumMergedRegions()); } - /** - * Ensures that pagebreak cloning works properly - * - */ - public void testPageBreakClones() { - HSSFWorkbook b = new HSSFWorkbook(); - HSSFSheet s = b.createSheet("Test"); - s.setRowBreak(3); - s.setColumnBreak((short)6); - - HSSFSheet clone = b.cloneSheet(0); - assertTrue("Row 3 not broken", clone.isRowBroken(3)); - assertTrue("Column 6 not broken", clone.isColumnBroken((short)6)); - - s.removeRowBreak(3); - - assertTrue("Row 3 still should be broken", clone.isRowBroken(3)); - } + /** + * Ensures that pagebreak cloning works properly + */ + public void testPageBreakClones() { + HSSFWorkbook b = new HSSFWorkbook(); + HSSFSheet s = b.createSheet("Test"); + s.setRowBreak(3); + s.setColumnBreak((short) 6); + + HSSFSheet clone = b.cloneSheet(0); + assertTrue("Row 3 not broken", clone.isRowBroken(3)); + assertTrue("Column 6 not broken", clone.isColumnBroken((short) 6)); + + s.removeRowBreak(3); + + assertTrue("Row 3 still should be broken", clone.isRowBroken(3)); + } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFConditionalFormatting.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFConditionalFormatting.java index 5d0416fc7c..f4fa306cc2 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFConditionalFormatting.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFConditionalFormatting.java @@ -23,10 +23,9 @@ import junit.framework.TestCase; import org.apache.poi.hssf.record.CFRuleRecord.ComparisonOperator; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.ss.util.Region; /** - * + * * @author Dmitriy Kumshayev */ public final class TestHSSFConditionalFormatting extends TestCase { @@ -36,7 +35,7 @@ public final class TestHSSFConditionalFormatting extends TestCase { String formula = "7"; HSSFSheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting(); - + HSSFConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule(formula); HSSFFontFormatting fontFmt = rule1.createFontFormatting(); fontFmt.setFontStyle(true, false); @@ -50,7 +49,7 @@ public final class TestHSSFConditionalFormatting extends TestCase { HSSFPatternFormatting patternFmt = rule1.createPatternFormatting(); patternFmt.setFillBackgroundColor(HSSFColor.YELLOW.index); - + HSSFConditionalFormattingRule rule2 = sheetCF.createConditionalFormattingRule(ComparisonOperator.BETWEEN, "1", "2"); HSSFConditionalFormattingRule [] cfRules = { @@ -84,12 +83,12 @@ public final class TestHSSFConditionalFormatting extends TestCase { assertEquals(2, cf.getNumberOfRules()); rule1 = cf.getRule(0); - assertEquals("7",rule1.getFormula1()); + assertEquals("7",rule1.getFormula1()); assertNull(rule1.getFormula2()); - + HSSFFontFormatting r1fp = rule1.getFontFormatting(); assertNotNull(r1fp); - + assertTrue(r1fp.isItalic()); assertFalse(r1fp.isBold()); @@ -102,13 +101,13 @@ public final class TestHSSFConditionalFormatting extends TestCase { HSSFPatternFormatting r1pf = rule1.getPatternFormatting(); assertNotNull(r1pf); - assertEquals(HSSFColor.YELLOW.index,r1pf.getFillBackgroundColor()); + assertEquals(HSSFColor.YELLOW.index,r1pf.getFillBackgroundColor()); rule2 = cf.getRule(1); - assertEquals("2",rule2.getFormula2()); - assertEquals("1",rule2.getFormula1()); + assertEquals("2",rule2.getFormula2()); + assertEquals("1",rule2.getFormula1()); } - + public void testClone() { HSSFWorkbook wb = new HSSFWorkbook(); @@ -116,7 +115,7 @@ public final class TestHSSFConditionalFormatting extends TestCase { String formula = "7"; HSSFSheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting(); - + HSSFConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule(formula); HSSFFontFormatting fontFmt = rule1.createFontFormatting(); fontFmt.setFontStyle(true, false); @@ -124,7 +123,7 @@ public final class TestHSSFConditionalFormatting extends TestCase { HSSFPatternFormatting patternFmt = rule1.createPatternFormatting(); patternFmt.setFillBackgroundColor(HSSFColor.YELLOW.index); - + HSSFConditionalFormattingRule rule2 = sheetCF.createConditionalFormattingRule(ComparisonOperator.BETWEEN, "1", "2"); HSSFConditionalFormattingRule [] cfRules = { @@ -137,7 +136,7 @@ public final class TestHSSFConditionalFormatting extends TestCase { }; sheetCF.addConditionalFormatting(regions, cfRules); - + try { wb.cloneSheet(0); } catch (RuntimeException e) { diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java index a2b8cc50b3..0f9c7ae0f1 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -442,7 +441,7 @@ public final class TestHSSFDateUtil extends TestCase { * Ensure that date values *with* a fractional portion get the right time of day */ public void testConvertDateTime() { - // Excel day 30000 is date 18-Feb-1982 + // Excel day 30000 is date 18-Feb-1982 // 0.7 corresponds to time 16:48:00 Date actual = HSSFDateUtil.getJavaDate(30000.7); Date expected = createDate(1982, 1, 18, 16, 48, 0); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java index f6ce14ca92..8350654494 100755 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFFont.java @@ -17,26 +17,9 @@ package org.apache.poi.hssf.usermodel; -import java.util.Date; -import java.util.GregorianCalendar; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; - -import junit.framework.AssertionFailedError; import org.apache.poi.hssf.HSSFITestDataProvider; -import org.apache.poi.hssf.HSSFTestDataSamples; -import org.apache.poi.hssf.model.Sheet; -import org.apache.poi.hssf.model.HSSFFormulaParser; -import org.apache.poi.hssf.record.DBCellRecord; -import org.apache.poi.hssf.record.FormulaRecord; -import org.apache.poi.hssf.record.Record; -import org.apache.poi.hssf.record.StringRecord; -import org.apache.poi.hssf.record.formula.Ptg; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.AreaReference; -import org.apache.poi.ss.util.CellReference; -import org.apache.poi.ss.formula.FormulaType; +import org.apache.poi.ss.usermodel.BaseTestFont; +import org.apache.poi.ss.usermodel.Font; /** * Tests various functionality having to do with {@link org.apache.poi.ss.usermodel.Name}. @@ -53,4 +36,4 @@ public final class TestHSSFFont extends BaseTestFont { public void testDefaultFont() { baseTestDefaultFont(HSSFFont.FONT_ARIAL, (short)200, Font.COLOR_NORMAL); } -} \ No newline at end of file +} diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFOptimiser.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFOptimiser.java index e54cd10ba4..fd41ed5231 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFOptimiser.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFOptimiser.java @@ -16,133 +16,126 @@ ==================================================================== */ package org.apache.poi.hssf.usermodel; -import org.apache.poi.hssf.model.Workbook; - import junit.framework.TestCase; -public class TestHSSFOptimiser extends TestCase { - public void testDoesNoHarmIfNothingToDo() throws Exception { +public final class TestHSSFOptimiser extends TestCase { + public void testDoesNoHarmIfNothingToDo() { HSSFWorkbook wb = new HSSFWorkbook(); - + HSSFFont f = wb.createFont(); f.setFontName("Testing"); HSSFCellStyle s = wb.createCellStyle(); s.setFont(f); - + assertEquals(5, wb.getNumberOfFonts()); assertEquals(22, wb.getNumCellStyles()); - + // Optimise fonts HSSFOptimiser.optimiseFonts(wb); - + assertEquals(5, wb.getNumberOfFonts()); assertEquals(22, wb.getNumCellStyles()); - + assertEquals(f, s.getFont(wb)); - + // Optimise styles HSSFOptimiser.optimiseCellStyles(wb); - + assertEquals(5, wb.getNumberOfFonts()); assertEquals(22, wb.getNumCellStyles()); - + assertEquals(f, s.getFont(wb)); } - - public void testOptimiseFonts() throws Exception { + + public void testOptimiseFonts() { HSSFWorkbook wb = new HSSFWorkbook(); - + // Add 6 fonts, some duplicates HSSFFont f1 = wb.createFont(); - f1.setFontHeight((short)11); + f1.setFontHeight((short) 11); f1.setFontName("Testing"); - + HSSFFont f2 = wb.createFont(); - f2.setFontHeight((short)22); + f2.setFontHeight((short) 22); f2.setFontName("Also Testing"); - + HSSFFont f3 = wb.createFont(); - f3.setFontHeight((short)33); + f3.setFontHeight((short) 33); f3.setFontName("Unique"); - + HSSFFont f4 = wb.createFont(); - f4.setFontHeight((short)11); + f4.setFontHeight((short) 11); f4.setFontName("Testing"); - + HSSFFont f5 = wb.createFont(); - f5.setFontHeight((short)22); + f5.setFontHeight((short) 22); f5.setFontName("Also Testing"); - + HSSFFont f6 = wb.createFont(); - f6.setFontHeight((short)66); + f6.setFontHeight((short) 66); f6.setFontName("Also Unique"); - - - + // Use all three of the four in cell styles assertEquals(21, wb.getNumCellStyles()); - + HSSFCellStyle cs1 = wb.createCellStyle(); cs1.setFont(f1); assertEquals(5, cs1.getFontIndex()); - + HSSFCellStyle cs2 = wb.createCellStyle(); cs2.setFont(f4); assertEquals(8, cs2.getFontIndex()); - + HSSFCellStyle cs3 = wb.createCellStyle(); cs3.setFont(f5); assertEquals(9, cs3.getFontIndex()); - + HSSFCellStyle cs4 = wb.createCellStyle(); cs4.setFont(f6); assertEquals(10, cs4.getFontIndex()); - + assertEquals(25, wb.getNumCellStyles()); - - + // And three in rich text HSSFSheet s = wb.createSheet(); HSSFRow r = s.createRow(0); - + HSSFRichTextString rtr1 = new HSSFRichTextString("Test"); rtr1.applyFont(0, 2, f1); rtr1.applyFont(3, 4, f2); r.createCell(0).setCellValue(rtr1); - + HSSFRichTextString rtr2 = new HSSFRichTextString("AlsoTest"); rtr2.applyFont(0, 2, f3); rtr2.applyFont(3, 5, f5); rtr2.applyFont(6, 8, f6); r.createCell(1).setCellValue(rtr2); - - + // Check what we have now assertEquals(10, wb.getNumberOfFonts()); assertEquals(25, wb.getNumCellStyles()); - + // Optimise HSSFOptimiser.optimiseFonts(wb); - + // Check font count assertEquals(8, wb.getNumberOfFonts()); assertEquals(25, wb.getNumCellStyles()); - + // Check font use in cell styles assertEquals(5, cs1.getFontIndex()); assertEquals(5, cs2.getFontIndex()); // duplicate of 1 assertEquals(6, cs3.getFontIndex()); // duplicate of 2 assertEquals(8, cs4.getFontIndex()); // two have gone - - + // And in rich text - - // RTR 1 had f1 and f2, unchanged + + // RTR 1 had f1 and f2, unchanged assertEquals(5, r.getCell(0).getRichStringCellValue().getFontAtIndex(0)); assertEquals(5, r.getCell(0).getRichStringCellValue().getFontAtIndex(1)); assertEquals(6, r.getCell(0).getRichStringCellValue().getFontAtIndex(3)); assertEquals(6, r.getCell(0).getRichStringCellValue().getFontAtIndex(4)); - + // RTR 2 had f3 (unchanged), f5 (=f2) and f6 (moved down) assertEquals(7, r.getCell(1).getRichStringCellValue().getFontAtIndex(0)); assertEquals(7, r.getCell(1).getRichStringCellValue().getFontAtIndex(1)); @@ -151,54 +144,52 @@ public class TestHSSFOptimiser extends TestCase { assertEquals(8, r.getCell(1).getRichStringCellValue().getFontAtIndex(6)); assertEquals(8, r.getCell(1).getRichStringCellValue().getFontAtIndex(7)); } - - public void testOptimiseStyles() throws Exception { + + public void testOptimiseStyles() { HSSFWorkbook wb = new HSSFWorkbook(); // Two fonts assertEquals(4, wb.getNumberOfFonts()); - + HSSFFont f1 = wb.createFont(); - f1.setFontHeight((short)11); + f1.setFontHeight((short) 11); f1.setFontName("Testing"); - + HSSFFont f2 = wb.createFont(); - f2.setFontHeight((short)22); + f2.setFontHeight((short) 22); f2.setFontName("Also Testing"); assertEquals(6, wb.getNumberOfFonts()); - - + // Several styles assertEquals(21, wb.getNumCellStyles()); - + HSSFCellStyle cs1 = wb.createCellStyle(); cs1.setFont(f1); - + HSSFCellStyle cs2 = wb.createCellStyle(); cs2.setFont(f2); - + HSSFCellStyle cs3 = wb.createCellStyle(); cs3.setFont(f1); - + HSSFCellStyle cs4 = wb.createCellStyle(); cs4.setFont(f1); - cs4.setAlignment((short)22); - + cs4.setAlignment((short) 22); + HSSFCellStyle cs5 = wb.createCellStyle(); cs5.setFont(f2); - cs5.setAlignment((short)111); - + cs5.setAlignment((short) 111); + HSSFCellStyle cs6 = wb.createCellStyle(); cs6.setFont(f2); - + assertEquals(27, wb.getNumCellStyles()); - - + // Use them HSSFSheet s = wb.createSheet(); HSSFRow r = s.createRow(0); - + r.createCell(0).setCellStyle(cs1); r.createCell(1).setCellStyle(cs2); r.createCell(2).setCellStyle(cs3); @@ -207,20 +198,18 @@ public class TestHSSFOptimiser extends TestCase { r.createCell(5).setCellStyle(cs6); r.createCell(6).setCellStyle(cs1); r.createCell(7).setCellStyle(cs2); - + assertEquals(21, r.getCell(0).getCellValueRecord().getXFIndex()); assertEquals(26, r.getCell(5).getCellValueRecord().getXFIndex()); assertEquals(21, r.getCell(6).getCellValueRecord().getXFIndex()); - - + // Optimise HSSFOptimiser.optimiseCellStyles(wb); - - + // Check assertEquals(6, wb.getNumberOfFonts()); assertEquals(25, wb.getNumCellStyles()); - + // cs1 -> 21 assertEquals(21, r.getCell(0).getCellValueRecord().getXFIndex()); // cs2 -> 22 diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java index ab5cc95c15..8f39857694 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java @@ -1,22 +1,21 @@ -/* -* 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.poi.hssf.usermodel; +/* ==================================================================== + 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 -import junit.framework.TestCase; + 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.poi.hssf.usermodel; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.HSSFITestDataProvider; diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java index 3c5a0911c4..31173bba2a 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFRow.java @@ -18,9 +18,7 @@ package org.apache.poi.hssf.usermodel; import junit.framework.AssertionFailedError; -import junit.framework.TestCase; -import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.HSSFITestDataProvider; import org.apache.poi.hssf.record.BlankRecord; import org.apache.poi.hssf.record.RowRecord; @@ -87,8 +85,8 @@ public final class TestHSSFRow extends BaseTestRow { assertEquals(-1, row.getLastCellNum()); assertEquals(-1, row.getFirstCellNum()); HSSFCell cellB2 = row.createCell(1); - HSSFCell cellB3 = row.createCell(2); - HSSFCell cellB4 = row.createCell(3); + row.createCell(2); // C2 + row.createCell(3); // D2 assertEquals(1, row.getFirstCellNum()); assertEquals(4, row.getLastCellNum()); diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java index 484ff70e18..ab7cca3186 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java @@ -23,7 +23,6 @@ import java.io.IOException; import java.util.List; import junit.framework.AssertionFailedError; -import junit.framework.TestCase; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.HSSFITestDataProvider; @@ -68,7 +67,7 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook { fail("WindowOneRecord in Workbook is probably not initialized"); } } - + /** * Tests for {@link HSSFWorkbook#isHidden()} etc */ diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java b/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java index 98980fe191..feaf77b229 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java @@ -19,8 +19,6 @@ package org.apache.poi.hssf.usermodel; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; import java.io.InputStream; import junit.framework.TestCase; diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java index 7868381220..15682a074b 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java @@ -32,7 +32,6 @@ import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.aggregates.RecordAggregate.RecordVisitor; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.ss.util.Region; import org.apache.poi.util.TempFile; /** @@ -428,7 +427,7 @@ public final class TestWorkbook extends TestCase { s.addMergedRegion(new CellRangeAddress(30, 40, 5, 15)); sanityChecker.checkHSSFWorkbook(wb); wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - + s = wb.getSheetAt(0); CellRangeAddress r1 = s.getMergedRegion(0); CellRangeAddress r2 = s.getMergedRegion(1); @@ -473,7 +472,7 @@ public final class TestWorkbook extends TestCase { } } } - + /** * This tests is for bug [ #506658 ] Repeating output. * diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestPropertySorter.java b/src/testcases/org/apache/poi/poifs/filesystem/TestPropertySorter.java index ecff6778a3..2c30d1b12d 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestPropertySorter.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestPropertySorter.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -20,14 +19,13 @@ package org.apache.poi.poifs.filesystem; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.Iterator; +import java.util.List; import junit.framework.ComparisonFailure; import junit.framework.TestCase; @@ -62,7 +60,7 @@ public final class TestPropertySorter extends TestCase { throw new RuntimeException(e); } } - + /** * Test sorting of properties in DirectoryProperty */ @@ -125,22 +123,22 @@ public final class TestPropertySorter extends TestCase { DirectoryNode vba = (DirectoryNode)vba_project.getEntry(VBA); DirectoryProperty p = (DirectoryProperty)vba.getProperty(); - ArrayList lst = new ArrayList(); - for (Iterator it = p.getChildren(); it.hasNext();){ - Property ch = (Property)it.next(); + List lst = new ArrayList(); + for (Iterator it = p.getChildren(); it.hasNext();){ + Property ch = it.next(); lst.add(ch); } - return (Property [])lst.toArray(new Property[ 0 ]); + return lst.toArray(new Property[ 0 ]); } /** * Old version of case-sensitive PropertyComparator to demonstrate the problem */ - private static final Comparator OldCaseSensitivePropertyComparator = new Comparator() { + private static final Comparator OldCaseSensitivePropertyComparator = new Comparator() { - public int compare(Object o1, Object o2) { - String name1 = (( Property ) o1).getName(); - String name2 = (( Property ) o2).getName(); + public int compare(Property o1, Property o2) { + String name1 = o1.getName(); + String name2 = o2.getName(); int result = name1.length() - name2.length(); if (result == 0) { diff --git a/src/testcases/org/apache/poi/poifs/storage/LocalRawDataBlockList.java b/src/testcases/org/apache/poi/poifs/storage/LocalRawDataBlockList.java index 21049ebf18..61bc943f58 100644 --- a/src/testcases/org/apache/poi/poifs/storage/LocalRawDataBlockList.java +++ b/src/testcases/org/apache/poi/poifs/storage/LocalRawDataBlockList.java @@ -1,4 +1,3 @@ - /* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with @@ -15,42 +14,32 @@ See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ - package org.apache.poi.poifs.storage; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + import org.apache.poi.poifs.common.POIFSConstants; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.LittleEndian; import org.apache.poi.util.LittleEndianConsts; -import java.io.*; - -import java.util.*; - /** * Class LocalRawDataBlockList * * @author Marc Johnson(mjohnson at apache dot org) */ - -public class LocalRawDataBlockList - extends RawDataBlockList -{ - private List _list; +public final class LocalRawDataBlockList extends RawDataBlockList { + private List _list; private RawDataBlock[] _array; - /** - * Constructor LocalRawDataBlockList - * - * @exception IOException - */ - public LocalRawDataBlockList() throws IOException { super(new ByteArrayInputStream(new byte[ 0 ]), POIFSConstants.BIG_BLOCK_SIZE); - _list = new ArrayList(); + _list = new ArrayList(); _array = null; } @@ -60,10 +49,7 @@ public class LocalRawDataBlockList * @param start index of first BAT block * @param end index of last BAT block * @param chain index of next XBAT block - * - * @exception IOException */ - public void createNewXBATBlock(final int start, final int end, final int chain) throws IOException @@ -89,10 +75,7 @@ public class LocalRawDataBlockList * create a BAT block and add it to the list * * @param start_index initial index for the block list - * - * @exception IOException */ - public void createNewBATBlock(final int start_index) throws IOException { @@ -124,10 +107,7 @@ public class LocalRawDataBlockList * fill the list with dummy blocks * * @param count of blocks - * - * @exception IOException */ - public void fill(final int count) throws IOException { @@ -144,7 +124,6 @@ public class LocalRawDataBlockList * * @param block new block to add */ - public void add(RawDataBlock block) { _list.add(block); @@ -156,10 +135,7 @@ public class LocalRawDataBlockList * @param index of block to be removed * * @return desired block - * - * @exception IOException */ - public ListManagedBlock remove(final int index) throws IOException { @@ -189,7 +165,6 @@ public class LocalRawDataBlockList * @param index the index of the specified block; if the index is * out of range, that's ok */ - public void zap(final int index) { ensureArrayExists(); @@ -203,7 +178,7 @@ public class LocalRawDataBlockList { if (_array == null) { - _array = ( RawDataBlock [] ) _list.toArray(new RawDataBlock[ 0 ]); + _array = _list.toArray(new RawDataBlock[ 0 ]); } } } diff --git a/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java b/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java index 35715f65b1..03f57c3112 100644 --- a/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java +++ b/src/testcases/org/apache/poi/poifs/storage/TestBlockListImpl.java @@ -34,9 +34,17 @@ import org.apache.poi.util.LittleEndianConsts; * @author Marc Johnson */ public final class TestBlockListImpl extends TestCase { + private static final class BlockListTestImpl extends BlockListImpl { + public BlockListTestImpl() { + // no extra initialisation + } + } + private static BlockListImpl create() { + return new BlockListTestImpl(); + } public void testZap() throws IOException { - BlockListImpl list = new BlockListImpl(); + BlockListImpl list = create(); // verify that you can zap anything for (int j = -2; j < 10; j++) @@ -70,8 +78,9 @@ public final class TestBlockListImpl extends TestCase { } } + public void testRemove() throws IOException { - BlockListImpl list = new BlockListImpl(); + BlockListImpl list = create(); RawDataBlock[] blocks = new RawDataBlock[ 5 ]; byte[] data = new byte[ 512 * 5 ]; @@ -130,7 +139,7 @@ public final class TestBlockListImpl extends TestCase { } public void testSetBAT() throws IOException { - BlockListImpl list = new BlockListImpl(); + BlockListImpl list = create(); list.setBAT(null); list.setBAT(new BlockAllocationTableReader()); @@ -158,7 +167,7 @@ public final class TestBlockListImpl extends TestCase { // document, one that includes a reserved (BAT) block, one // that includes a reserved (XBAT) block, and one that // points off into space somewhere - BlockListImpl list = new BlockListImpl(); + BlockListImpl list = create(); List raw_blocks = new ArrayList(); byte[] data = new byte[ 512 ]; int offset = 0; -- 2.39.5