Add missing @Overrides, reformat some files, increase coverage slightly,
comments, fix Eclipse warnings and add close() calls in some tests and in HMEFMessage() to close files during tests correctly. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1602008 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b9dee7bd46
commit
9d1d93b88f
@ -28,6 +28,7 @@ under the License.
|
||||
Rainer Klute klute@rainer-klute.de
|
||||
Bruno Girin brunogirin@gmail.com
|
||||
Yegor Kozlov yegor at apache.org
|
||||
Dominik Stadler centic at apache.org
|
||||
|
||||
This build was tested with ant 1.6.2 although it will probably work with
|
||||
other versions. The following jar files should be available on the
|
||||
@ -40,7 +41,7 @@ under the License.
|
||||
To build the documentation you will need to install forrest and set
|
||||
the FORREST_HOME environment variable. Forrest 0.5.1 required.
|
||||
|
||||
You currently need JDK 1.6 or newer to build POI.
|
||||
Since POI 3.11 you will need JDK 1.6 or newer to build POI.
|
||||
|
||||
Some people may find the tests hang when run through Ant. If this
|
||||
happens to you, try giving Ant some more memory when you run it, eg:
|
||||
|
@ -114,6 +114,7 @@ public class CustomProperty extends MutableProperty
|
||||
/**
|
||||
* @see java.util.AbstractSet#hashCode()
|
||||
*/
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return (int) this.getID();
|
||||
|
@ -133,6 +133,7 @@ public final class XSSFCell implements Cell {
|
||||
*
|
||||
* @return the sheet this cell belongs to
|
||||
*/
|
||||
@Override
|
||||
public XSSFSheet getSheet() {
|
||||
return getRow().getSheet();
|
||||
}
|
||||
@ -142,6 +143,7 @@ public final class XSSFCell implements Cell {
|
||||
*
|
||||
* @return the row this cell belongs to
|
||||
*/
|
||||
@Override
|
||||
public XSSFRow getRow() {
|
||||
return _row;
|
||||
}
|
||||
@ -155,6 +157,7 @@ public final class XSSFCell implements Cell {
|
||||
* @throws IllegalStateException if the cell type returned by {@link #getCellType()}
|
||||
* is not CELL_TYPE_BOOLEAN, CELL_TYPE_BLANK or CELL_TYPE_FORMULA
|
||||
*/
|
||||
@Override
|
||||
public boolean getBooleanCellValue() {
|
||||
int cellType = getCellType();
|
||||
switch(cellType) {
|
||||
@ -177,6 +180,7 @@ public final class XSSFCell implements Cell {
|
||||
* precalculated value, for booleans we'll set its value. For other types we
|
||||
* will change the cell to a boolean cell and set its value.
|
||||
*/
|
||||
@Override
|
||||
public void setCellValue(boolean value) {
|
||||
_cell.setT(STCellType.B);
|
||||
_cell.setV(value ? TRUE_AS_STRING : FALSE_AS_STRING);
|
||||
@ -193,6 +197,7 @@ public final class XSSFCell implements Cell {
|
||||
* @exception NumberFormatException if the cell value isn't a parsable <code>double</code>.
|
||||
* @see DataFormatter for turning this number into a string similar to that which Excel would render this number as.
|
||||
*/
|
||||
@Override
|
||||
public double getNumericCellValue() {
|
||||
int cellType = getCellType();
|
||||
switch(cellType) {
|
||||
@ -222,6 +227,7 @@ public final class XSSFCell implements Cell {
|
||||
* precalculated value, for numerics we'll set its value. For other types we
|
||||
* will change the cell to a numeric cell and set its value.
|
||||
*/
|
||||
@Override
|
||||
public void setCellValue(double value) {
|
||||
if(Double.isInfinite(value)) {
|
||||
// Excel does not support positive/negative infinities,
|
||||
@ -247,6 +253,7 @@ public final class XSSFCell implements Cell {
|
||||
* </p>
|
||||
* @return the value of the cell as a string
|
||||
*/
|
||||
@Override
|
||||
public String getStringCellValue() {
|
||||
XSSFRichTextString str = getRichStringCellValue();
|
||||
return str == null ? null : str.getString();
|
||||
@ -260,6 +267,7 @@ public final class XSSFCell implements Cell {
|
||||
* </p>
|
||||
* @return the value of the cell as a XSSFRichTextString
|
||||
*/
|
||||
@Override
|
||||
public XSSFRichTextString getRichStringCellValue() {
|
||||
int cellType = getCellType();
|
||||
XSSFRichTextString rt;
|
||||
@ -316,6 +324,7 @@ public final class XSSFCell implements Cell {
|
||||
* change the cell to a string cell and set its value.
|
||||
* If value is null then we will change the cell to a Blank cell.
|
||||
*/
|
||||
@Override
|
||||
public void setCellValue(String str) {
|
||||
setCellValue(str == null ? null : new XSSFRichTextString(str));
|
||||
}
|
||||
@ -328,6 +337,7 @@ public final class XSSFCell implements Cell {
|
||||
* change the cell to a string cell and set its value.
|
||||
* If value is null then we will change the cell to a Blank cell.
|
||||
*/
|
||||
@Override
|
||||
public void setCellValue(RichTextString str) {
|
||||
if(str == null || str.getString() == null){
|
||||
setCellType(Cell.CELL_TYPE_BLANK);
|
||||
@ -360,6 +370,7 @@ public final class XSSFCell implements Cell {
|
||||
* @return a formula for the cell
|
||||
* @throws IllegalStateException if the cell type returned by {@link #getCellType()} is not CELL_TYPE_FORMULA
|
||||
*/
|
||||
@Override
|
||||
public String getCellFormula() {
|
||||
int cellType = getCellType();
|
||||
if(cellType != CELL_TYPE_FORMULA) throw typeMismatch(CELL_TYPE_FORMULA, cellType, false);
|
||||
@ -417,6 +428,7 @@ public final class XSSFCell implements Cell {
|
||||
* @throws IllegalStateException if the operation is not allowed, for example,
|
||||
* when the cell is a part of a multi-cell array formula
|
||||
*/
|
||||
@Override
|
||||
public void setCellFormula(String formula) {
|
||||
if(isPartOfArrayFormulaGroup()){
|
||||
notifyArrayFormulaChanging();
|
||||
@ -454,6 +466,7 @@ public final class XSSFCell implements Cell {
|
||||
*
|
||||
* @return zero-based column index of a column in a sheet.
|
||||
*/
|
||||
@Override
|
||||
public int getColumnIndex() {
|
||||
return this._cellNum;
|
||||
}
|
||||
@ -463,6 +476,7 @@ public final class XSSFCell implements Cell {
|
||||
*
|
||||
* @return zero-based row index of a row in the sheet that contains this cell
|
||||
*/
|
||||
@Override
|
||||
public int getRowIndex() {
|
||||
return _row.getRowNum();
|
||||
}
|
||||
@ -485,6 +499,7 @@ public final class XSSFCell implements Cell {
|
||||
*
|
||||
* @return the cell's style.</code>
|
||||
*/
|
||||
@Override
|
||||
public XSSFCellStyle getCellStyle() {
|
||||
XSSFCellStyle style = null;
|
||||
if(_stylesSource.getNumCellStyles() > 0){
|
||||
@ -501,6 +516,7 @@ public final class XSSFCell implements Cell {
|
||||
* @param style reference contained in the workbook.
|
||||
* If the value is null then the style information is removed causing the cell to used the default workbook style.
|
||||
*/
|
||||
@Override
|
||||
public void setCellStyle(CellStyle style) {
|
||||
if(style == null) {
|
||||
if(_cell.isSetS()) _cell.unsetS();
|
||||
@ -524,6 +540,7 @@ public final class XSSFCell implements Cell {
|
||||
* @see Cell#CELL_TYPE_BOOLEAN
|
||||
* @see Cell#CELL_TYPE_ERROR
|
||||
*/
|
||||
@Override
|
||||
public int getCellType() {
|
||||
|
||||
if (_cell.getF() != null || getSheet().isCellInArrayFormulaContext(this)) {
|
||||
@ -539,6 +556,7 @@ public final class XSSFCell implements Cell {
|
||||
* {@link #CELL_TYPE_BOOLEAN}, {@link #CELL_TYPE_ERROR}) depending
|
||||
* on the cached value of the formula
|
||||
*/
|
||||
@Override
|
||||
public int getCachedFormulaResultType() {
|
||||
if (_cell.getF() == null) {
|
||||
throw new IllegalStateException("Only formula cells have cached results");
|
||||
@ -585,6 +603,7 @@ public final class XSSFCell implements Cell {
|
||||
* @exception NumberFormatException if the cell value isn't a parsable <code>double</code>.
|
||||
* @see DataFormatter for formatting this date into a string similar to how excel does.
|
||||
*/
|
||||
@Override
|
||||
public Date getDateCellValue() {
|
||||
int cellType = getCellType();
|
||||
if (cellType == CELL_TYPE_BLANK) {
|
||||
@ -604,6 +623,7 @@ public final class XSSFCell implements Cell {
|
||||
* precalculated value, for numerics we'll set its value. For other types we
|
||||
* will change the cell to a numeric cell and set its value.
|
||||
*/
|
||||
@Override
|
||||
public void setCellValue(Date value) {
|
||||
boolean date1904 = getSheet().getWorkbook().isDate1904();
|
||||
setCellValue(DateUtil.getExcelDate(value, date1904));
|
||||
@ -625,6 +645,7 @@ public final class XSSFCell implements Cell {
|
||||
* precalculated value, for numerics we'll set its value. For othertypes we
|
||||
* will change the cell to a numeric cell and set its value.
|
||||
*/
|
||||
@Override
|
||||
public void setCellValue(Calendar value) {
|
||||
boolean date1904 = getSheet().getWorkbook().isDate1904();
|
||||
setCellValue( DateUtil.getExcelDate(value, date1904 ));
|
||||
@ -654,6 +675,7 @@ public final class XSSFCell implements Cell {
|
||||
* @throws IllegalStateException if the cell type returned by {@link #getCellType()} isn't CELL_TYPE_ERROR
|
||||
* @see FormulaError
|
||||
*/
|
||||
@Override
|
||||
public byte getErrorCellValue() {
|
||||
String code = getErrorCellString();
|
||||
if (code == null) {
|
||||
@ -672,6 +694,7 @@ public final class XSSFCell implements Cell {
|
||||
* cell and set its value.
|
||||
* @see FormulaError
|
||||
*/
|
||||
@Override
|
||||
public void setCellErrorValue(byte errorCode) {
|
||||
FormulaError error = FormulaError.forInt(errorCode);
|
||||
setCellErrorValue(error);
|
||||
@ -693,6 +716,7 @@ public final class XSSFCell implements Cell {
|
||||
/**
|
||||
* Sets this cell as the active cell for the worksheet.
|
||||
*/
|
||||
@Override
|
||||
public void setAsActiveCell() {
|
||||
getSheet().setActiveCell(getReference());
|
||||
}
|
||||
@ -731,16 +755,17 @@ public final class XSSFCell implements Cell {
|
||||
* @see #CELL_TYPE_BOOLEAN
|
||||
* @see #CELL_TYPE_ERROR
|
||||
*/
|
||||
@Override
|
||||
public void setCellType(int cellType) {
|
||||
int prevType = getCellType();
|
||||
|
||||
|
||||
if(isPartOfArrayFormulaGroup()){
|
||||
notifyArrayFormulaChanging();
|
||||
}
|
||||
if(prevType == CELL_TYPE_FORMULA && cellType != CELL_TYPE_FORMULA) {
|
||||
getSheet().getWorkbook().onDeleteFormula(this);
|
||||
}
|
||||
|
||||
|
||||
switch (cellType) {
|
||||
case CELL_TYPE_BLANK:
|
||||
setBlank();
|
||||
@ -873,6 +898,7 @@ public final class XSSFCell implements Cell {
|
||||
*
|
||||
* @return the cell comment associated with this cell or <code>null</code>
|
||||
*/
|
||||
@Override
|
||||
public XSSFComment getCellComment() {
|
||||
return getSheet().getCellComment(_row.getRowNum(), getColumnIndex());
|
||||
}
|
||||
@ -883,6 +909,7 @@ public final class XSSFCell implements Cell {
|
||||
*
|
||||
* @param comment the XSSFComment associated with this cell
|
||||
*/
|
||||
@Override
|
||||
public void setCellComment(Comment comment) {
|
||||
if(comment == null) {
|
||||
removeCellComment();
|
||||
@ -896,6 +923,7 @@ public final class XSSFCell implements Cell {
|
||||
/**
|
||||
* Removes the comment for this cell, if there is one.
|
||||
*/
|
||||
@Override
|
||||
public void removeCellComment() {
|
||||
XSSFComment comment = getCellComment();
|
||||
if(comment != null){
|
||||
@ -911,6 +939,7 @@ public final class XSSFCell implements Cell {
|
||||
*
|
||||
* @return hyperlink associated with this cell or <code>null</code> if not found
|
||||
*/
|
||||
@Override
|
||||
public XSSFHyperlink getHyperlink() {
|
||||
return getSheet().getHyperlink(_row.getRowNum(), _cellNum);
|
||||
}
|
||||
@ -920,6 +949,7 @@ public final class XSSFCell implements Cell {
|
||||
*
|
||||
* @param hyperlink the hyperlink to associate with this cell
|
||||
*/
|
||||
@Override
|
||||
public void setHyperlink(Hyperlink hyperlink) {
|
||||
XSSFHyperlink link = (XSSFHyperlink)hyperlink;
|
||||
|
||||
@ -1026,6 +1056,7 @@ public final class XSSFCell implements Cell {
|
||||
throw new IllegalStateException("Unexpected formula result type (" + cellType + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public CellRangeAddress getArrayFormulaRange() {
|
||||
XSSFCell cell = getSheet().getFirstCellInArrayFormula(this);
|
||||
if (cell == null) {
|
||||
@ -1036,6 +1067,7 @@ public final class XSSFCell implements Cell {
|
||||
return CellRangeAddress.valueOf(formulaRef);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPartOfArrayFormulaGroup() {
|
||||
return getSheet().isCellInArrayFormulaContext(this);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -227,11 +227,11 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* // work with the wb object
|
||||
* ......
|
||||
* pkg.close(); // gracefully closes the underlying zip file
|
||||
* </code></pre>
|
||||
* </code></pre>
|
||||
*/
|
||||
public XSSFWorkbook(InputStream is) throws IOException {
|
||||
super(PackageHelper.open(is));
|
||||
|
||||
|
||||
//build a tree of POIXMLDocumentParts, this workbook being the root
|
||||
load(XSSFFactory.getInstance());
|
||||
}
|
||||
@ -253,7 +253,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* then pass the data to ZipInputStream.
|
||||
* </li>
|
||||
* <ol>
|
||||
* <p>
|
||||
* <p>
|
||||
* It should be noted, that (2) uses quite a bit more memory than (1), which
|
||||
* doesn't need to hold the whole zip file in memory, and can take advantage
|
||||
* of native methods.
|
||||
@ -267,9 +267,9 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* // work with the wb object
|
||||
* ......
|
||||
* pkg.close(); // gracefully closes the underlying zip file
|
||||
* </code></pre>
|
||||
* </code></pre>
|
||||
* </p>
|
||||
*
|
||||
*
|
||||
* @param path the file name.
|
||||
* @deprecated
|
||||
*/
|
||||
@ -399,6 +399,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @see Workbook#PICTURE_TYPE_DIB
|
||||
* @see #getAllPictures()
|
||||
*/
|
||||
@Override
|
||||
public int addPicture(byte[] pictureData, int format) {
|
||||
int imageNumber = getAllPictures().size() + 1;
|
||||
XSSFPictureData img = (XSSFPictureData)createRelationship(XSSFPictureData.RELATIONS[format], XSSFFactory.getInstance(), imageNumber, true);
|
||||
@ -446,6 +447,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @throws IllegalArgumentException if the sheet index in invalid
|
||||
* @throws POIXMLException if there were errors when cloning
|
||||
*/
|
||||
@Override
|
||||
public XSSFSheet cloneSheet(int sheetNum) {
|
||||
validateSheetIndex(sheetNum);
|
||||
|
||||
@ -557,6 +559,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @return the new XSSFCellStyle object
|
||||
*/
|
||||
@Override
|
||||
public XSSFCellStyle createCellStyle() {
|
||||
return stylesSource.createCellStyle();
|
||||
}
|
||||
@ -567,6 +570,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @return the XSSFDataFormat object
|
||||
* @see org.apache.poi.ss.usermodel.DataFormat
|
||||
*/
|
||||
@Override
|
||||
public XSSFDataFormat createDataFormat() {
|
||||
if (formatter == null)
|
||||
formatter = new XSSFDataFormat(stylesSource);
|
||||
@ -578,12 +582,14 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @return new font object
|
||||
*/
|
||||
@Override
|
||||
public XSSFFont createFont() {
|
||||
XSSFFont font = new XSSFFont();
|
||||
font.registerTo(stylesSource);
|
||||
return font;
|
||||
}
|
||||
|
||||
@Override
|
||||
public XSSFName createName() {
|
||||
CTDefinedName ctName = CTDefinedName.Factory.newInstance();
|
||||
ctName.setName("");
|
||||
@ -598,6 +604,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @return XSSFSheet representing the new sheet.
|
||||
*/
|
||||
@Override
|
||||
public XSSFSheet createSheet() {
|
||||
String sheetname = "Sheet" + (sheets.size());
|
||||
int idx = 0;
|
||||
@ -655,6 +662,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* or workbook already contains a sheet with this name
|
||||
* @see org.apache.poi.ss.util.WorkbookUtil#createSafeSheetName(String nameProposal)
|
||||
*/
|
||||
@Override
|
||||
public XSSFSheet createSheet(String sheetname) {
|
||||
if (sheetname == null) {
|
||||
throw new IllegalArgumentException("sheetName must not be null");
|
||||
@ -695,6 +703,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
/**
|
||||
* Finds a font that matches the one with the supplied attributes
|
||||
*/
|
||||
@Override
|
||||
public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) {
|
||||
return stylesSource.findFont(boldWeight, color, fontHeight, name, italic, strikeout, typeOffset, underline);
|
||||
}
|
||||
@ -704,6 +713,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* which is currently displayed when the workbook is viewed in Excel.
|
||||
* 'Selected' sheet(s) is a distinct concept.
|
||||
*/
|
||||
@Override
|
||||
public int getActiveSheetIndex() {
|
||||
//activeTab (Active Sheet Index) Specifies an unsignedInt
|
||||
//that contains the index to the active sheet in this book view.
|
||||
@ -716,6 +726,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @return the list of pictures (a list of {@link XSSFPictureData} objects.)
|
||||
* @see #addPicture(byte[], int)
|
||||
*/
|
||||
@Override
|
||||
public List<XSSFPictureData> getAllPictures() {
|
||||
if(pictures == null){
|
||||
List<PackagePart> mediaParts = getPackage().getPartsByName(Pattern.compile("/xl/media/.*?"));
|
||||
@ -733,6 +744,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param idx index within the set of styles
|
||||
* @return XSSFCellStyle object at the index
|
||||
*/
|
||||
@Override
|
||||
public XSSFCellStyle getCellStyleAt(short idx) {
|
||||
return stylesSource.getStyleAt(idx);
|
||||
}
|
||||
@ -743,10 +755,12 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param idx index number
|
||||
* @return XSSFFont at the index
|
||||
*/
|
||||
@Override
|
||||
public XSSFFont getFontAt(short idx) {
|
||||
return stylesSource.getFontAt(idx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public XSSFName getName(String name) {
|
||||
int nameIndex = getNameIndex(name);
|
||||
if (nameIndex < 0) {
|
||||
@ -755,6 +769,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
return namedRanges.get(nameIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public XSSFName getNameAt(int nameIndex) {
|
||||
int nNames = namedRanges.size();
|
||||
if (nNames < 1) {
|
||||
@ -775,6 +790,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param name named range name
|
||||
* @return named range index
|
||||
*/
|
||||
@Override
|
||||
public int getNameIndex(String name) {
|
||||
int i = 0;
|
||||
for(XSSFName nr : namedRanges) {
|
||||
@ -791,6 +807,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @return count of cell styles
|
||||
*/
|
||||
@Override
|
||||
public short getNumCellStyles() {
|
||||
return (short) (stylesSource).getNumCellStyles();
|
||||
}
|
||||
@ -800,6 +817,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @return number of fonts
|
||||
*/
|
||||
@Override
|
||||
public short getNumberOfFonts() {
|
||||
return (short)stylesSource.getFonts().size();
|
||||
}
|
||||
@ -809,6 +827,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @return number of named ranges
|
||||
*/
|
||||
@Override
|
||||
public int getNumberOfNames() {
|
||||
return namedRanges.size();
|
||||
}
|
||||
@ -818,6 +837,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @return number of worksheets
|
||||
*/
|
||||
@Override
|
||||
public int getNumberOfSheets() {
|
||||
return sheets.size();
|
||||
}
|
||||
@ -827,6 +847,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param sheetIndex Zero-based sheet index (0 Represents the first sheet to keep consistent with java)
|
||||
* @return String Null if no print area has been defined
|
||||
*/
|
||||
@Override
|
||||
public String getPrintArea(int sheetIndex) {
|
||||
XSSFName name = getBuiltInName(XSSFName.BUILTIN_PRINT_AREA, sheetIndex);
|
||||
if (name == null) return null;
|
||||
@ -841,6 +862,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param name of the sheet
|
||||
* @return XSSFSheet with the name provided or <code>null</code> if it does not exist
|
||||
*/
|
||||
@Override
|
||||
public XSSFSheet getSheet(String name) {
|
||||
for (XSSFSheet sheet : sheets) {
|
||||
if (name.equalsIgnoreCase(sheet.getSheetName())) {
|
||||
@ -858,6 +880,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @throws IllegalArgumentException if the index is out of range (index
|
||||
* < 0 || index >= getNumberOfSheets()).
|
||||
*/
|
||||
@Override
|
||||
public XSSFSheet getSheetAt(int index) {
|
||||
validateSheetIndex(index);
|
||||
return sheets.get(index);
|
||||
@ -869,6 +892,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param name the sheet name
|
||||
* @return index of the sheet (0 based) or <tt>-1</tt if not found
|
||||
*/
|
||||
@Override
|
||||
public int getSheetIndex(String name) {
|
||||
for (int i = 0 ; i < sheets.size() ; ++i) {
|
||||
XSSFSheet sheet = sheets.get(i);
|
||||
@ -885,6 +909,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param sheet the sheet to look up
|
||||
* @return index of the sheet (0 based). <tt>-1</tt> if not found
|
||||
*/
|
||||
@Override
|
||||
public int getSheetIndex(Sheet sheet) {
|
||||
int idx = 0;
|
||||
for(XSSFSheet sh : sheets){
|
||||
@ -900,6 +925,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param sheetIx Number
|
||||
* @return Sheet name
|
||||
*/
|
||||
@Override
|
||||
public String getSheetName(int sheetIx) {
|
||||
validateSheetIndex(sheetIx);
|
||||
return sheets.get(sheetIx).getSheetName();
|
||||
@ -914,6 +940,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* }
|
||||
* </code></pre>
|
||||
*/
|
||||
@Override
|
||||
public Iterator<XSSFSheet> iterator() {
|
||||
return sheets.iterator();
|
||||
}
|
||||
@ -925,10 +952,12 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
return getPackagePart().getContentType().equals(XSSFRelation.MACROS_WORKBOOK.getContentType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeName(int nameIndex) {
|
||||
namedRanges.remove(nameIndex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeName(String name) {
|
||||
for (int i = 0; i < namedRanges.size(); i++) {
|
||||
XSSFName nm = namedRanges.get(i);
|
||||
@ -942,9 +971,9 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
|
||||
|
||||
/**
|
||||
* As {@link #removeName(String)} is not necessarily unique
|
||||
* As {@link #removeName(String)} is not necessarily unique
|
||||
* (name + sheet index is unique), this method is more accurate.
|
||||
*
|
||||
*
|
||||
* @param name the name to remove.
|
||||
*/
|
||||
void removeName(XSSFName name) {
|
||||
@ -959,6 +988,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @param sheetIndex 0-based sheet index (0 = First Sheet)
|
||||
*/
|
||||
@Override
|
||||
public void removePrintArea(int sheetIndex) {
|
||||
int cont = 0;
|
||||
for (XSSFName name : namedRanges) {
|
||||
@ -984,6 +1014,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @param index of the sheet (0-based)
|
||||
*/
|
||||
@Override
|
||||
public void removeSheetAt(int index) {
|
||||
validateSheetIndex(index);
|
||||
|
||||
@ -1029,6 +1060,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* The default is to return blank and null cells.
|
||||
* {@link MissingCellPolicy}
|
||||
*/
|
||||
@Override
|
||||
public MissingCellPolicy getMissingCellPolicy() {
|
||||
return _missingCellPolicy;
|
||||
}
|
||||
@ -1039,6 +1071,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* {@link Row#getCell(int)}}. See
|
||||
* {@link MissingCellPolicy}
|
||||
*/
|
||||
@Override
|
||||
public void setMissingCellPolicy(MissingCellPolicy missingCellPolicy) {
|
||||
_missingCellPolicy = missingCellPolicy;
|
||||
}
|
||||
@ -1048,6 +1081,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* which is currently displayed when the workbook is viewed in Excel.
|
||||
* 'Selected' sheet(s) is a distinct concept.
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("deprecation") //YK: getXYZArray() array accessors are deprecated in xmlbeans with JDK 1.5 support
|
||||
public void setActiveSheet(int index) {
|
||||
|
||||
@ -1082,6 +1116,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @return integer that contains the index to the active sheet in this book view.
|
||||
*/
|
||||
@Override
|
||||
public int getFirstVisibleTab() {
|
||||
CTBookViews bookViews = workbook.getBookViews();
|
||||
CTBookView bookView = bookViews.getWorkbookViewArray(0);
|
||||
@ -1093,6 +1128,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @param index integer that contains the index to the active sheet in this book view.
|
||||
*/
|
||||
@Override
|
||||
public void setFirstVisibleTab(int index) {
|
||||
CTBookViews bookViews = workbook.getBookViews();
|
||||
CTBookView bookView= bookViews.getWorkbookViewArray(0);
|
||||
@ -1106,6 +1142,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param sheetIndex Zero-based sheet index (0 Represents the first sheet to keep consistent with java)
|
||||
* @param reference Valid name Reference for the Print Area
|
||||
*/
|
||||
@Override
|
||||
public void setPrintArea(int sheetIndex, String reference) {
|
||||
XSSFName name = getBuiltInName(XSSFName.BUILTIN_PRINT_AREA, sheetIndex);
|
||||
if (name == null) {
|
||||
@ -1135,6 +1172,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param startRow Row to begin the printarea
|
||||
* @param endRow Row to end the printarea
|
||||
*/
|
||||
@Override
|
||||
public void setPrintArea(int sheetIndex, int startColumn, int endColumn, int startRow, int endRow) {
|
||||
String reference=getReferencePrintArea(getSheetName(sheetIndex), startColumn, endColumn, startRow, endRow);
|
||||
setPrintArea(sheetIndex, reference);
|
||||
@ -1162,18 +1200,20 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param endColumn 0 based end of repeating columns.
|
||||
* @param startRow 0 based start of repeating rows.
|
||||
* @param endRow 0 based end of repeating rows.
|
||||
*
|
||||
*
|
||||
* @deprecated use {@link XSSFSheet#setRepeatingRows(CellRangeAddress)}
|
||||
* or {@link XSSFSheet#setRepeatingColumns(CellRangeAddress)}
|
||||
*/
|
||||
@Deprecated
|
||||
@Override
|
||||
public void setRepeatingRowsAndColumns(int sheetIndex,
|
||||
int startColumn, int endColumn,
|
||||
int startRow, int endRow) {
|
||||
XSSFSheet sheet = getSheetAt(sheetIndex);
|
||||
|
||||
|
||||
CellRangeAddress rows = null;
|
||||
CellRangeAddress cols = null;
|
||||
|
||||
|
||||
if (startRow != -1) {
|
||||
rows = new CellRangeAddress(startRow, endRow, -1, -1);
|
||||
}
|
||||
@ -1231,6 +1271,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
/**
|
||||
* We only set one sheet as selected for compatibility with HSSF.
|
||||
*/
|
||||
@Override
|
||||
public void setSelectedTab(int index) {
|
||||
for (int i = 0 ; i < sheets.size() ; ++i) {
|
||||
XSSFSheet sheet = sheets.get(i);
|
||||
@ -1248,6 +1289,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @see #createSheet(String)
|
||||
* @see org.apache.poi.ss.util.WorkbookUtil#createSafeSheetName(String nameProposal)
|
||||
*/
|
||||
@Override
|
||||
public void setSheetName(int sheetIndex, String sheetname) {
|
||||
validateSheetIndex(sheetIndex);
|
||||
|
||||
@ -1272,6 +1314,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param sheetname the name of the sheet to reorder
|
||||
* @param pos the position that we want to insert the sheet into (0 based)
|
||||
*/
|
||||
@Override
|
||||
public void setSheetOrder(String sheetname, int pos) {
|
||||
int idx = getSheetIndex(sheetname);
|
||||
sheets.add(pos, sheets.remove(idx));
|
||||
@ -1391,6 +1434,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* Returns an object that handles instantiating concrete
|
||||
* classes of the various instances for XSSF.
|
||||
*/
|
||||
@Override
|
||||
public XSSFCreationHelper getCreationHelper() {
|
||||
if(_creationHelper == null) _creationHelper = new XSSFCreationHelper(this);
|
||||
return _creationHelper;
|
||||
@ -1457,10 +1501,12 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
return embedds;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHidden() {
|
||||
throw new RuntimeException("Not implemented yet");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHidden(boolean hiddenFlag) {
|
||||
throw new RuntimeException("Not implemented yet");
|
||||
}
|
||||
@ -1474,6 +1520,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param sheetIx Number
|
||||
* @return <code>true</code> if sheet is hidden
|
||||
*/
|
||||
@Override
|
||||
public boolean isSheetHidden(int sheetIx) {
|
||||
validateSheetIndex(sheetIx);
|
||||
CTSheet ctSheet = sheets.get(sheetIx).sheet;
|
||||
@ -1489,6 +1536,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param sheetIx sheet index to check
|
||||
* @return <code>true</code> if sheet is very hidden
|
||||
*/
|
||||
@Override
|
||||
public boolean isSheetVeryHidden(int sheetIx) {
|
||||
validateSheetIndex(sheetIx);
|
||||
CTSheet ctSheet = sheets.get(sheetIx).sheet;
|
||||
@ -1509,6 +1557,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* @param hidden whether this sheet is hidden
|
||||
* @see #setSheetHidden(int, int)
|
||||
*/
|
||||
@Override
|
||||
public void setSheetHidden(int sheetIx, boolean hidden) {
|
||||
setSheetHidden(sheetIx, hidden ? SHEET_STATE_HIDDEN : SHEET_STATE_VISIBLE);
|
||||
}
|
||||
@ -1528,6 +1577,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* <code>Workbook.SHEET_STATE_VERY_HIDDEN</code>.
|
||||
* @throws IllegalArgumentException if the supplied sheet index or state is invalid
|
||||
*/
|
||||
@Override
|
||||
public void setSheetHidden(int sheetIx, int state) {
|
||||
validateSheetIndex(sheetIx);
|
||||
WorkbookUtil.validateSheetState(state);
|
||||
@ -1584,7 +1634,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* A value true indicates the structure of the workbook is locked. Worksheets in the workbook can't be moved,
|
||||
* deleted, hidden, unhidden, or renamed, and new worksheets can't be inserted.<br/>
|
||||
* A value of false indicates the structure of the workbook is not locked.<br/>
|
||||
*
|
||||
*
|
||||
* @return true if structure of workbook is locked
|
||||
*/
|
||||
public boolean isStructureLocked() {
|
||||
@ -1596,7 +1646,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* A value of true indicates the workbook windows are locked. Windows are the same size and position each time the
|
||||
* workbook is opened.<br/>
|
||||
* A value of false indicates the workbook windows are not locked.
|
||||
*
|
||||
*
|
||||
* @return true if windows that comprise the workbook are locked
|
||||
*/
|
||||
public boolean isWindowsLocked() {
|
||||
@ -1605,13 +1655,13 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
|
||||
/**
|
||||
* Specifies a boolean value that indicates whether the workbook is locked for revisions.
|
||||
*
|
||||
*
|
||||
* @return true if the workbook is locked for revisions.
|
||||
*/
|
||||
public boolean isRevisionLocked() {
|
||||
return workbookProtectionPresent() && workbook.getWorkbookProtection().getLockRevision();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Locks the structure of workbook.
|
||||
*/
|
||||
@ -1619,7 +1669,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
createProtectionFieldIfNotPresent();
|
||||
workbook.getWorkbookProtection().setLockStructure(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Unlocks the structure of workbook.
|
||||
*/
|
||||
@ -1629,21 +1679,21 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
}
|
||||
|
||||
/**
|
||||
* Locks the windows that comprise the workbook.
|
||||
* Locks the windows that comprise the workbook.
|
||||
*/
|
||||
public void lockWindows() {
|
||||
createProtectionFieldIfNotPresent();
|
||||
workbook.getWorkbookProtection().setLockWindows(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Unlocks the windows that comprise the workbook.
|
||||
* Unlocks the windows that comprise the workbook.
|
||||
*/
|
||||
public void unLockWindows() {
|
||||
createProtectionFieldIfNotPresent();
|
||||
workbook.getWorkbookProtection().setLockWindows(false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Locks the workbook for revisions.
|
||||
*/
|
||||
@ -1659,7 +1709,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
createProtectionFieldIfNotPresent();
|
||||
workbook.getWorkbookProtection().setLockRevision(false);
|
||||
}
|
||||
|
||||
|
||||
private boolean workbookProtectionPresent() {
|
||||
return workbook.getWorkbookProtection() != null;
|
||||
}
|
||||
@ -1691,6 +1741,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @param toopack the toolpack to register
|
||||
*/
|
||||
@Override
|
||||
public void addToolPack(UDFFinder toopack){
|
||||
_udfFinder.add(toopack);
|
||||
}
|
||||
@ -1712,7 +1763,8 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
* workbook values when the workbook is opened
|
||||
* @since 3.8
|
||||
*/
|
||||
public void setForceFormulaRecalculation(boolean value){
|
||||
@Override
|
||||
public void setForceFormulaRecalculation(boolean value){
|
||||
CTWorkbook ctWorkbook = getCTWorkbook();
|
||||
CTCalcPr calcPr = ctWorkbook.isSetCalcPr() ? ctWorkbook.getCalcPr() : ctWorkbook.addNewCalcPr();
|
||||
// when set to 0, will tell Excel that it needs to recalculate all formulas
|
||||
@ -1729,6 +1781,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
|
||||
*
|
||||
* @since 3.8
|
||||
*/
|
||||
@Override
|
||||
public boolean getForceFormulaRecalculation(){
|
||||
CTWorkbook ctWorkbook = getCTWorkbook();
|
||||
CTCalcPr calcPr = ctWorkbook.getCalcPr();
|
||||
|
@ -66,6 +66,8 @@ public class TestXWPFBugs {
|
||||
assertNotNull(text);
|
||||
assertEquals("This is password protected Word document.", text.trim());
|
||||
ex.close();
|
||||
|
||||
filesystem.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -101,5 +103,7 @@ public class TestXWPFBugs {
|
||||
// I know ... a stupid typo, maybe next time ...
|
||||
assertEquals("The is a password protected document.", text.trim());
|
||||
ex.close();
|
||||
|
||||
filesystem.close();
|
||||
}
|
||||
}
|
||||
|
@ -47,20 +47,24 @@ public final class HMEFMessage {
|
||||
private List<Attachment> attachments = new ArrayList<Attachment>();
|
||||
|
||||
public HMEFMessage(InputStream inp) throws IOException {
|
||||
// Check the signature matches
|
||||
int sig = LittleEndian.readInt(inp);
|
||||
if(sig != HEADER_SIGNATURE) {
|
||||
throw new IllegalArgumentException(
|
||||
"TNEF signature not detected in file, " +
|
||||
"expected " + HEADER_SIGNATURE + " but got " + sig
|
||||
);
|
||||
try {
|
||||
// Check the signature matches
|
||||
int sig = LittleEndian.readInt(inp);
|
||||
if(sig != HEADER_SIGNATURE) {
|
||||
throw new IllegalArgumentException(
|
||||
"TNEF signature not detected in file, " +
|
||||
"expected " + HEADER_SIGNATURE + " but got " + sig
|
||||
);
|
||||
}
|
||||
|
||||
// Read the File ID
|
||||
fileId = LittleEndian.readUShort(inp);
|
||||
|
||||
// Now begin processing the contents
|
||||
process(inp);
|
||||
} finally {
|
||||
inp.close();
|
||||
}
|
||||
|
||||
// Read the File ID
|
||||
fileId = LittleEndian.readUShort(inp);
|
||||
|
||||
// Now begin processing the contents
|
||||
process(inp);
|
||||
}
|
||||
|
||||
private void process(InputStream inp) throws IOException {
|
||||
|
@ -18,6 +18,7 @@
|
||||
package org.apache.poi.hmef;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
@ -34,13 +35,16 @@ public abstract class HMEFTest extends TestCase {
|
||||
}
|
||||
protected void assertContents(String filename, byte[] actual)
|
||||
throws IOException {
|
||||
byte[] expected = IOUtils.toByteArray(
|
||||
_samples.openResourceAsStream("quick-contents/" + filename)
|
||||
);
|
||||
|
||||
assertEquals(expected.length, actual.length);
|
||||
for(int i=0; i<expected.length; i++) {
|
||||
assertEquals("Byte " + i + " wrong", expected[i], actual[i]);
|
||||
InputStream stream = _samples.openResourceAsStream("quick-contents/" + filename);
|
||||
try {
|
||||
byte[] expected = IOUtils.toByteArray(stream);
|
||||
|
||||
assertEquals(expected.length, actual.length);
|
||||
for(int i=0; i<expected.length; i++) {
|
||||
assertEquals("Byte " + i + " wrong", expected[i], actual[i]);
|
||||
}
|
||||
} finally {
|
||||
stream.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,7 @@
|
||||
package org.apache.poi.hmef;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.InputStream;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
@ -157,34 +158,37 @@ public final class TestCompressedRTF extends TestCase {
|
||||
assertNotNull(attr);
|
||||
MAPIRtfAttribute rtfAttr = (MAPIRtfAttribute)attr;
|
||||
|
||||
byte[] expected = IOUtils.toByteArray(
|
||||
_samples.openResourceAsStream("quick-contents/message.rtf")
|
||||
);
|
||||
|
||||
CompressedRTF comp = new CompressedRTF();
|
||||
byte[] data = rtfAttr.getRawData();
|
||||
byte[] decomp = comp.decompress(new ByteArrayInputStream(data));
|
||||
|
||||
// Check the length was as expected
|
||||
assertEquals(data.length, comp.getCompressedSize() + 16);
|
||||
assertEquals(expected.length, comp.getDeCompressedSize());
|
||||
|
||||
// Will have been padded though
|
||||
assertEquals(expected.length+2, decomp.length);
|
||||
byte[] tmp = new byte[expected.length];
|
||||
System.arraycopy(decomp, 0, tmp, 0, tmp.length);
|
||||
decomp = tmp;
|
||||
|
||||
// By byte
|
||||
assertEquals(expected.length, decomp.length);
|
||||
for(int i=0; i<expected.length; i++) {
|
||||
assertEquals(expected[i], decomp[i]);
|
||||
InputStream stream = _samples.openResourceAsStream("quick-contents/message.rtf");
|
||||
try {
|
||||
byte[] expected = IOUtils.toByteArray(stream);
|
||||
|
||||
CompressedRTF comp = new CompressedRTF();
|
||||
byte[] data = rtfAttr.getRawData();
|
||||
byte[] decomp = comp.decompress(new ByteArrayInputStream(data));
|
||||
|
||||
// Check the length was as expected
|
||||
assertEquals(data.length, comp.getCompressedSize() + 16);
|
||||
assertEquals(expected.length, comp.getDeCompressedSize());
|
||||
|
||||
// Will have been padded though
|
||||
assertEquals(expected.length+2, decomp.length);
|
||||
byte[] tmp = new byte[expected.length];
|
||||
System.arraycopy(decomp, 0, tmp, 0, tmp.length);
|
||||
decomp = tmp;
|
||||
|
||||
// By byte
|
||||
assertEquals(expected.length, decomp.length);
|
||||
for(int i=0; i<expected.length; i++) {
|
||||
assertEquals(expected[i], decomp[i]);
|
||||
}
|
||||
|
||||
// By String
|
||||
String expString = new String(expected, "ASCII");
|
||||
String decompStr = rtfAttr.getDataString();
|
||||
assertEquals(expString.length(), decompStr.length());
|
||||
assertEquals(expString, decompStr);
|
||||
} finally {
|
||||
stream.close();
|
||||
}
|
||||
|
||||
// By String
|
||||
String expString = new String(expected, "ASCII");
|
||||
String decompStr = rtfAttr.getDataString();
|
||||
assertEquals(expString.length(), decompStr.length());
|
||||
assertEquals(expString, decompStr);
|
||||
}
|
||||
}
|
||||
|
@ -18,6 +18,7 @@
|
||||
package org.apache.poi.hmef.attribute;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.text.DateFormat;
|
||||
import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
@ -32,17 +33,25 @@ import org.apache.poi.util.LittleEndian;
|
||||
public final class TestMAPIAttributes extends TestCase {
|
||||
private static final POIDataSamples _samples = POIDataSamples.getHMEFInstance();
|
||||
private HMEFMessage quick;
|
||||
private InputStream stream;
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
|
||||
quick = new HMEFMessage(
|
||||
_samples.openResourceAsStream("quick-winmail.dat")
|
||||
);
|
||||
stream = _samples.openResourceAsStream("quick-winmail.dat");
|
||||
quick = new HMEFMessage(stream);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
|
||||
protected void tearDown() throws Exception {
|
||||
stream.close();
|
||||
|
||||
super.tearDown();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test counts
|
||||
*/
|
||||
public void testCounts() throws Exception {
|
||||
|
@ -91,8 +91,9 @@ public final class TestPublisherTextExtractor extends TestCase {
|
||||
assertEquals( SAMPLE_TEXT, ext.getText() );
|
||||
|
||||
// And with NPOIFS
|
||||
HPBFDocument docNPOIFS = new HPBFDocument(
|
||||
new NPOIFSFileSystem(sample)
|
||||
NPOIFSFileSystem fs = new NPOIFSFileSystem(sample);
|
||||
HPBFDocument docNPOIFS = new HPBFDocument(
|
||||
fs
|
||||
);
|
||||
ext = new PublisherTextExtractor(docNPOIFS);
|
||||
assertEquals( SAMPLE_TEXT, ext.getText() );
|
||||
@ -103,6 +104,7 @@ public final class TestPublisherTextExtractor extends TestCase {
|
||||
new FileInputStream(simple)
|
||||
);
|
||||
assertEquals( SIMPLE_TEXT, ext.getText() );
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -349,7 +349,8 @@ public final class TestExtractor extends POITestCase {
|
||||
// Open the two filesystems
|
||||
DirectoryNode[] files = new DirectoryNode[2];
|
||||
files[0] = (new POIFSFileSystem(slTests.openResourceAsStream("basic_test_ppt_file.ppt"))).getRoot();
|
||||
files[1] = (new NPOIFSFileSystem(slTests.getFile("basic_test_ppt_file.ppt"))).getRoot();
|
||||
NPOIFSFileSystem npoifsFileSystem = new NPOIFSFileSystem(slTests.getFile("basic_test_ppt_file.ppt"));
|
||||
files[1] = npoifsFileSystem.getRoot();
|
||||
|
||||
// Open directly
|
||||
for(DirectoryNode dir : files) {
|
||||
@ -363,6 +364,8 @@ public final class TestExtractor extends POITestCase {
|
||||
PowerPointExtractor extractor = new PowerPointExtractor(slideshow);
|
||||
assertEquals(expectText, extractor.getText());
|
||||
}
|
||||
|
||||
npoifsFileSystem.close();
|
||||
}
|
||||
|
||||
public void testTable() throws Exception{
|
||||
|
@ -342,7 +342,8 @@ public final class TestWordExtractor extends TestCase {
|
||||
// Open the two filesystems
|
||||
DirectoryNode[] files = new DirectoryNode[2];
|
||||
files[0] = (new POIFSFileSystem(docTests.openResourceAsStream("test2.doc"))).getRoot();
|
||||
files[1] = (new NPOIFSFileSystem(docTests.getFile("test2.doc"))).getRoot();
|
||||
NPOIFSFileSystem npoifsFileSystem = new NPOIFSFileSystem(docTests.getFile("test2.doc"));
|
||||
files[1] = npoifsFileSystem.getRoot();
|
||||
|
||||
// Open directly
|
||||
for(DirectoryNode dir : files) {
|
||||
@ -356,6 +357,8 @@ public final class TestWordExtractor extends TestCase {
|
||||
WordExtractor extractor = new WordExtractor(doc);
|
||||
assertEquals(p_text1_block, extractor.getText());
|
||||
}
|
||||
|
||||
npoifsFileSystem.close();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -21,53 +21,51 @@ import java.lang.reflect.AccessibleObject;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.poi.hwpf.HWPFDocFixture;
|
||||
|
||||
public final class TestFileInformationBlock
|
||||
extends TestCase
|
||||
{
|
||||
private FileInformationBlock _fileInformationBlock = null;
|
||||
private HWPFDocFixture _hWPFDocFixture;
|
||||
public final class TestFileInformationBlock extends TestCase {
|
||||
private FileInformationBlock _fileInformationBlock = null;
|
||||
private HWPFDocFixture _hWPFDocFixture;
|
||||
|
||||
public void testReadWrite()
|
||||
throws Exception
|
||||
{
|
||||
int size = _fileInformationBlock.getSize();
|
||||
byte[] buf = new byte[size];
|
||||
public void testReadWrite() throws Exception {
|
||||
int size = _fileInformationBlock.getSize();
|
||||
byte[] buf = new byte[size];
|
||||
|
||||
_fileInformationBlock.getFibBase().serialize(buf, 0);
|
||||
_fileInformationBlock.getFibBase().serialize(buf, 0);
|
||||
|
||||
FileInformationBlock newFileInformationBlock =
|
||||
new FileInformationBlock(buf);
|
||||
FileInformationBlock newFileInformationBlock = new FileInformationBlock(
|
||||
buf);
|
||||
|
||||
Field[] fields = FileInformationBlock.class.getSuperclass().getDeclaredFields();
|
||||
AccessibleObject.setAccessible(fields, true);
|
||||
Field[] fields = FileInformationBlock.class.getSuperclass()
|
||||
.getDeclaredFields();
|
||||
AccessibleObject.setAccessible(fields, true);
|
||||
|
||||
for (int x = 0; x < fields.length; x++)
|
||||
{
|
||||
assertEquals(fields[x].get(_fileInformationBlock), fields[x].get(newFileInformationBlock));
|
||||
for (int x = 0; x < fields.length; x++) {
|
||||
assertEquals(fields[x].get(_fileInformationBlock),
|
||||
fields[x].get(newFileInformationBlock));
|
||||
}
|
||||
|
||||
assertNotNull(_fileInformationBlock.toString());
|
||||
}
|
||||
}
|
||||
|
||||
protected void setUp()
|
||||
throws Exception
|
||||
{
|
||||
super.setUp();
|
||||
/**@todo verify the constructors*/
|
||||
_hWPFDocFixture = new HWPFDocFixture(this, HWPFDocFixture.DEFAULT_TEST_FILE);
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
/** @todo verify the constructors */
|
||||
_hWPFDocFixture = new HWPFDocFixture(this,
|
||||
HWPFDocFixture.DEFAULT_TEST_FILE);
|
||||
|
||||
_hWPFDocFixture.setUp();
|
||||
_fileInformationBlock = _hWPFDocFixture._fib;
|
||||
}
|
||||
_hWPFDocFixture.setUp();
|
||||
_fileInformationBlock = _hWPFDocFixture._fib;
|
||||
}
|
||||
|
||||
protected void tearDown()
|
||||
throws Exception
|
||||
{
|
||||
_fileInformationBlock = null;
|
||||
_hWPFDocFixture.tearDown();
|
||||
|
||||
_hWPFDocFixture = null;
|
||||
super.tearDown();
|
||||
}
|
||||
@Override
|
||||
protected void tearDown() throws Exception {
|
||||
_fileInformationBlock = null;
|
||||
_hWPFDocFixture.tearDown();
|
||||
|
||||
_hWPFDocFixture = null;
|
||||
super.tearDown();
|
||||
}
|
||||
}
|
||||
|
@ -27,162 +27,162 @@ import org.apache.poi.hwpf.HWPFDocument;
|
||||
import org.apache.poi.hwpf.HWPFTestDataSamples;
|
||||
import org.apache.poi.hwpf.model.io.HWPFFileSystem;
|
||||
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public final class TestTextPieceTable extends TestCase {
|
||||
private HWPFDocFixture _hWPFDocFixture;
|
||||
//private String dirname;
|
||||
private HWPFDocFixture _hWPFDocFixture;
|
||||
|
||||
public void testReadWrite()
|
||||
throws Exception
|
||||
{
|
||||
FileInformationBlock fib = _hWPFDocFixture._fib;
|
||||
byte[] mainStream = _hWPFDocFixture._mainStream;
|
||||
byte[] tableStream = _hWPFDocFixture._tableStream;
|
||||
int fcMin = fib.getFibBase().getFcMin();
|
||||
// private String dirname;
|
||||
|
||||
ComplexFileTable cft = new ComplexFileTable(mainStream, tableStream, fib.getFcClx(), fcMin);
|
||||
public void testReadWrite() throws Exception {
|
||||
FileInformationBlock fib = _hWPFDocFixture._fib;
|
||||
byte[] mainStream = _hWPFDocFixture._mainStream;
|
||||
byte[] tableStream = _hWPFDocFixture._tableStream;
|
||||
int fcMin = fib.getFibBase().getFcMin();
|
||||
|
||||
ComplexFileTable cft = new ComplexFileTable(mainStream, tableStream,
|
||||
fib.getFcClx(), fcMin);
|
||||
|
||||
HWPFFileSystem fileSys = new HWPFFileSystem();
|
||||
HWPFFileSystem fileSys = new HWPFFileSystem();
|
||||
|
||||
cft.writeTo(fileSys);
|
||||
ByteArrayOutputStream tableOut = fileSys.getStream("1Table");
|
||||
ByteArrayOutputStream mainOut = fileSys.getStream("WordDocument");
|
||||
cft.writeTo(fileSys);
|
||||
ByteArrayOutputStream tableOut = fileSys.getStream("1Table");
|
||||
ByteArrayOutputStream mainOut = fileSys.getStream("WordDocument");
|
||||
|
||||
byte[] newTableStream = tableOut.toByteArray();
|
||||
byte[] newMainStream = mainOut.toByteArray();
|
||||
byte[] newTableStream = tableOut.toByteArray();
|
||||
byte[] newMainStream = mainOut.toByteArray();
|
||||
|
||||
ComplexFileTable newCft = new ComplexFileTable(newMainStream, newTableStream, 0,0);
|
||||
ComplexFileTable newCft = new ComplexFileTable(newMainStream,
|
||||
newTableStream, 0, 0);
|
||||
|
||||
TextPieceTable oldTextPieceTable = cft.getTextPieceTable();
|
||||
TextPieceTable newTextPieceTable = newCft.getTextPieceTable();
|
||||
TextPieceTable oldTextPieceTable = cft.getTextPieceTable();
|
||||
TextPieceTable newTextPieceTable = newCft.getTextPieceTable();
|
||||
|
||||
assertEquals(oldTextPieceTable, newTextPieceTable);
|
||||
}
|
||||
assertEquals(oldTextPieceTable, newTextPieceTable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check that we do the positions correctly when
|
||||
* working with pure-ascii
|
||||
*/
|
||||
public void testAsciiParts() throws Exception {
|
||||
HWPFDocument doc = HWPFTestDataSamples.openSampleFile("ThreeColHeadFoot.doc");
|
||||
TextPieceTable tbl = doc.getTextTable();
|
||||
/**
|
||||
* Check that we do the positions correctly when working with pure-ascii
|
||||
*/
|
||||
public void testAsciiParts() throws Exception {
|
||||
HWPFDocument doc = HWPFTestDataSamples
|
||||
.openSampleFile("ThreeColHeadFoot.doc");
|
||||
TextPieceTable tbl = doc.getTextTable();
|
||||
|
||||
// All ascii, so stored in one big lump
|
||||
assertEquals(1, tbl.getTextPieces().size());
|
||||
TextPiece tp = tbl.getTextPieces().get(0);
|
||||
// All ascii, so stored in one big lump
|
||||
assertEquals(1, tbl.getTextPieces().size());
|
||||
TextPiece tp = tbl.getTextPieces().get(0);
|
||||
|
||||
assertEquals(0, tp.getStart());
|
||||
assertEquals(339, tp.getEnd());
|
||||
assertEquals(339, tp.characterLength());
|
||||
assertEquals(339, tp.bytesLength());
|
||||
assertTrue(tp.getStringBuilder().toString().startsWith("This is a sample word document"));
|
||||
assertEquals(0, tp.getStart());
|
||||
assertEquals(339, tp.getEnd());
|
||||
assertEquals(339, tp.characterLength());
|
||||
assertEquals(339, tp.bytesLength());
|
||||
assertTrue(tp.getStringBuilder().toString()
|
||||
.startsWith("This is a sample word document"));
|
||||
|
||||
// Save and re-load
|
||||
HWPFDocument docB = saveAndReload(doc);
|
||||
tbl = docB.getTextTable();
|
||||
|
||||
// Save and re-load
|
||||
HWPFDocument docB = saveAndReload(doc);
|
||||
tbl = docB.getTextTable();
|
||||
assertEquals(1, tbl.getTextPieces().size());
|
||||
tp = tbl.getTextPieces().get(0);
|
||||
|
||||
assertEquals(1, tbl.getTextPieces().size());
|
||||
tp = tbl.getTextPieces().get(0);
|
||||
assertEquals(0, tp.getStart());
|
||||
assertEquals(339, tp.getEnd());
|
||||
assertEquals(339, tp.characterLength());
|
||||
assertEquals(339, tp.bytesLength());
|
||||
assertTrue(tp.getStringBuilder().toString()
|
||||
.startsWith("This is a sample word document"));
|
||||
}
|
||||
|
||||
assertEquals(0, tp.getStart());
|
||||
assertEquals(339, tp.getEnd());
|
||||
assertEquals(339, tp.characterLength());
|
||||
assertEquals(339, tp.bytesLength());
|
||||
assertTrue(tp.getStringBuilder().toString().startsWith("This is a sample word document"));
|
||||
}
|
||||
/**
|
||||
* Check that we do the positions correctly when working with a mix ascii,
|
||||
* unicode file
|
||||
*/
|
||||
public void testUnicodeParts() throws Exception {
|
||||
HWPFDocument doc = HWPFTestDataSamples
|
||||
.openSampleFile("HeaderFooterUnicode.doc");
|
||||
TextPieceTable tbl = doc.getTextTable();
|
||||
|
||||
/**
|
||||
* Check that we do the positions correctly when
|
||||
* working with a mix ascii, unicode file
|
||||
*/
|
||||
public void testUnicodeParts() throws Exception {
|
||||
HWPFDocument doc = HWPFTestDataSamples.openSampleFile("HeaderFooterUnicode.doc");
|
||||
TextPieceTable tbl = doc.getTextTable();
|
||||
// In three bits, split every 512 bytes
|
||||
assertEquals(3, tbl.getTextPieces().size());
|
||||
TextPiece tpA = tbl.getTextPieces().get(0);
|
||||
TextPiece tpB = tbl.getTextPieces().get(1);
|
||||
TextPiece tpC = tbl.getTextPieces().get(2);
|
||||
|
||||
// In three bits, split every 512 bytes
|
||||
assertEquals(3, tbl.getTextPieces().size());
|
||||
TextPiece tpA = (TextPiece)tbl.getTextPieces().get(0);
|
||||
TextPiece tpB = (TextPiece)tbl.getTextPieces().get(1);
|
||||
TextPiece tpC = (TextPiece)tbl.getTextPieces().get(2);
|
||||
assertTrue(tpA.isUnicode());
|
||||
assertTrue(tpB.isUnicode());
|
||||
assertTrue(tpC.isUnicode());
|
||||
|
||||
assertTrue(tpA.isUnicode());
|
||||
assertTrue(tpB.isUnicode());
|
||||
assertTrue(tpC.isUnicode());
|
||||
assertEquals(256, tpA.characterLength());
|
||||
assertEquals(256, tpB.characterLength());
|
||||
assertEquals(19, tpC.characterLength());
|
||||
|
||||
assertEquals(256, tpA.characterLength());
|
||||
assertEquals(256, tpB.characterLength());
|
||||
assertEquals(19, tpC.characterLength());
|
||||
assertEquals(512, tpA.bytesLength());
|
||||
assertEquals(512, tpB.bytesLength());
|
||||
assertEquals(38, tpC.bytesLength());
|
||||
|
||||
assertEquals(512, tpA.bytesLength());
|
||||
assertEquals(512, tpB.bytesLength());
|
||||
assertEquals(38, tpC.bytesLength());
|
||||
assertEquals(0, tpA.getStart());
|
||||
assertEquals(256, tpA.getEnd());
|
||||
assertEquals(256, tpB.getStart());
|
||||
assertEquals(512, tpB.getEnd());
|
||||
assertEquals(512, tpC.getStart());
|
||||
assertEquals(531, tpC.getEnd());
|
||||
|
||||
assertEquals(0, tpA.getStart());
|
||||
assertEquals(256, tpA.getEnd());
|
||||
assertEquals(256, tpB.getStart());
|
||||
assertEquals(512, tpB.getEnd());
|
||||
assertEquals(512, tpC.getStart());
|
||||
assertEquals(531, tpC.getEnd());
|
||||
// Save and re-load
|
||||
HWPFDocument docB = saveAndReload(doc);
|
||||
tbl = docB.getTextTable();
|
||||
|
||||
assertEquals(3, tbl.getTextPieces().size());
|
||||
tpA = tbl.getTextPieces().get(0);
|
||||
tpB = tbl.getTextPieces().get(1);
|
||||
tpC = tbl.getTextPieces().get(2);
|
||||
|
||||
// Save and re-load
|
||||
HWPFDocument docB = saveAndReload(doc);
|
||||
tbl = docB.getTextTable();
|
||||
assertTrue(tpA.isUnicode());
|
||||
assertTrue(tpB.isUnicode());
|
||||
assertTrue(tpC.isUnicode());
|
||||
|
||||
assertEquals(3, tbl.getTextPieces().size());
|
||||
tpA = (TextPiece)tbl.getTextPieces().get(0);
|
||||
tpB = (TextPiece)tbl.getTextPieces().get(1);
|
||||
tpC = (TextPiece)tbl.getTextPieces().get(2);
|
||||
assertEquals(256, tpA.characterLength());
|
||||
assertEquals(256, tpB.characterLength());
|
||||
assertEquals(19, tpC.characterLength());
|
||||
|
||||
assertTrue(tpA.isUnicode());
|
||||
assertTrue(tpB.isUnicode());
|
||||
assertTrue(tpC.isUnicode());
|
||||
assertEquals(512, tpA.bytesLength());
|
||||
assertEquals(512, tpB.bytesLength());
|
||||
assertEquals(38, tpC.bytesLength());
|
||||
|
||||
assertEquals(256, tpA.characterLength());
|
||||
assertEquals(256, tpB.characterLength());
|
||||
assertEquals(19, tpC.characterLength());
|
||||
assertEquals(0, tpA.getStart());
|
||||
assertEquals(256, tpA.getEnd());
|
||||
assertEquals(256, tpB.getStart());
|
||||
assertEquals(512, tpB.getEnd());
|
||||
assertEquals(512, tpC.getStart());
|
||||
assertEquals(531, tpC.getEnd());
|
||||
}
|
||||
|
||||
assertEquals(512, tpA.bytesLength());
|
||||
assertEquals(512, tpB.bytesLength());
|
||||
assertEquals(38, tpC.bytesLength());
|
||||
protected HWPFDocument saveAndReload(HWPFDocument doc) throws Exception {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
doc.write(baos);
|
||||
|
||||
assertEquals(0, tpA.getStart());
|
||||
assertEquals(256, tpA.getEnd());
|
||||
assertEquals(256, tpB.getStart());
|
||||
assertEquals(512, tpB.getEnd());
|
||||
assertEquals(512, tpC.getStart());
|
||||
assertEquals(531, tpC.getEnd());
|
||||
}
|
||||
return new HWPFDocument(new ByteArrayInputStream(baos.toByteArray()));
|
||||
}
|
||||
|
||||
protected HWPFDocument saveAndReload(HWPFDocument doc) throws Exception {
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
doc.write(baos);
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
System.setProperty("org.apache.poi.hwpf.preserveTextTable",
|
||||
Boolean.TRUE.toString());
|
||||
|
||||
return new HWPFDocument(
|
||||
new ByteArrayInputStream(baos.toByteArray())
|
||||
);
|
||||
}
|
||||
_hWPFDocFixture = new HWPFDocFixture(this,
|
||||
HWPFDocFixture.DEFAULT_TEST_FILE);
|
||||
_hWPFDocFixture.setUp();
|
||||
}
|
||||
|
||||
protected void setUp()
|
||||
throws Exception
|
||||
{
|
||||
super.setUp();
|
||||
System.setProperty( "org.apache.poi.hwpf.preserveTextTable", Boolean.TRUE.toString() );
|
||||
@Override
|
||||
protected void tearDown() throws Exception {
|
||||
_hWPFDocFixture.tearDown();
|
||||
_hWPFDocFixture = null;
|
||||
|
||||
_hWPFDocFixture = new HWPFDocFixture(this, HWPFDocFixture.DEFAULT_TEST_FILE);
|
||||
_hWPFDocFixture.setUp();
|
||||
}
|
||||
|
||||
protected void tearDown()
|
||||
throws Exception
|
||||
{
|
||||
_hWPFDocFixture.tearDown();
|
||||
_hWPFDocFixture = null;
|
||||
|
||||
System.setProperty( "org.apache.poi.hwpf.preserveTextTable", Boolean.FALSE.toString() );
|
||||
super.tearDown();
|
||||
}
|
||||
System.setProperty("org.apache.poi.hwpf.preserveTextTable",
|
||||
Boolean.FALSE.toString());
|
||||
super.tearDown();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -396,11 +396,15 @@ public class TestBugs extends TestCase
|
||||
// document as text file using encoding UTF-8)
|
||||
InputStream is = POIDataSamples.getDocumentInstance()
|
||||
.openResourceAsStream( "Bug47742-text.txt" );
|
||||
byte[] expectedBytes = IOUtils.toByteArray( is );
|
||||
String expectedText = new String( expectedBytes, "utf-8" )
|
||||
.substring( 1 ); // strip-off the unicode marker
|
||||
|
||||
assertEquals( expectedText, foundText );
|
||||
try {
|
||||
byte[] expectedBytes = IOUtils.toByteArray( is );
|
||||
String expectedText = new String( expectedBytes, "utf-8" )
|
||||
.substring( 1 ); // strip-off the unicode marker
|
||||
|
||||
assertEquals( expectedText, foundText );
|
||||
} finally {
|
||||
is.close();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -268,7 +268,7 @@ public class TestWrite
|
||||
assertNotNull(psa[0]);
|
||||
assertTrue(psa[0].isSummaryInformation());
|
||||
|
||||
final Section s = (Section) (psa[0].getSections().get(0));
|
||||
final Section s = (psa[0].getSections().get(0));
|
||||
Object p1 = s.getProperty(PropertyIDMap.PID_AUTHOR);
|
||||
Object p2 = s.getProperty(PropertyIDMap.PID_TITLE);
|
||||
assertEquals(AUTHOR, p1);
|
||||
@ -349,11 +349,11 @@ public class TestWrite
|
||||
stream.close();
|
||||
}
|
||||
assertNotNull(psa[0]);
|
||||
Section s = (Section) (psa[0].getSections().get(0));
|
||||
Section s = (psa[0].getSections().get(0));
|
||||
assertEquals(s.getFormatID(), formatID);
|
||||
Object p = s.getProperty(2);
|
||||
assertEquals(SECTION1, p);
|
||||
s = (Section) (psa[0].getSections().get(1));
|
||||
s = (psa[0].getSections().get(1));
|
||||
p = s.getProperty(2);
|
||||
assertEquals(SECTION2, p);
|
||||
}
|
||||
@ -584,7 +584,7 @@ public class TestWrite
|
||||
|
||||
PropertySet psr = new PropertySet(bytes);
|
||||
assertTrue(psr.isSummaryInformation());
|
||||
Section sr = (Section) psr.getSections().get(0);
|
||||
Section sr = psr.getSections().get(0);
|
||||
String title = (String) sr.getProperty(PropertyIDMap.PID_TITLE);
|
||||
assertEquals(TITLE, title);
|
||||
}
|
||||
|
@ -131,7 +131,7 @@ final class Util {
|
||||
final String[] poiFiles)
|
||||
throws FileNotFoundException, IOException
|
||||
{
|
||||
final List files = new ArrayList();
|
||||
final List<POIFile> files = new ArrayList<POIFile>();
|
||||
POIFSReader r = new POIFSReader();
|
||||
POIFSReaderListener pfl = new POIFSReaderListener()
|
||||
{
|
||||
@ -170,7 +170,7 @@ final class Util {
|
||||
r.read(new FileInputStream(poiFs));
|
||||
POIFile[] result = new POIFile[files.size()];
|
||||
for (int i = 0; i < result.length; i++)
|
||||
result[i] = (POIFile) files.get(i);
|
||||
result[i] = files.get(i);
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -195,7 +195,7 @@ final class Util {
|
||||
public static POIFile[] readPropertySets(final File poiFs)
|
||||
throws FileNotFoundException, IOException
|
||||
{
|
||||
final List files = new ArrayList(7);
|
||||
final List<POIFile> files = new ArrayList<POIFile>(7);
|
||||
final POIFSReader r = new POIFSReader();
|
||||
POIFSReaderListener pfl = new POIFSReaderListener()
|
||||
{
|
||||
|
@ -111,6 +111,8 @@ public final class TestNPOIFSFileSystem {
|
||||
for(NPOIFSFileSystem fs : new NPOIFSFileSystem[] {fsA,fsB}) {
|
||||
assertEquals(512, fs.getBigBlockSize());
|
||||
}
|
||||
fsA.close();
|
||||
fsB.close();
|
||||
|
||||
// Now with a simple 4096 block file
|
||||
fsA = new NPOIFSFileSystem(_inst.getFile("BlockSize4096.zvi"));
|
||||
@ -118,6 +120,8 @@ public final class TestNPOIFSFileSystem {
|
||||
for(NPOIFSFileSystem fs : new NPOIFSFileSystem[] {fsA,fsB}) {
|
||||
assertEquals(4096, fs.getBigBlockSize());
|
||||
}
|
||||
fsA.close();
|
||||
fsB.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -186,6 +190,8 @@ public final class TestNPOIFSFileSystem {
|
||||
assertEquals(i+1, ministore.getNextBlock(i));
|
||||
}
|
||||
assertEquals(POIFSConstants.END_OF_CHAIN, ministore.getNextBlock(50));
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
// Now with a simple 4096 block file
|
||||
@ -252,6 +258,8 @@ public final class TestNPOIFSFileSystem {
|
||||
assertEquals(i+1, ministore.getNextBlock(i));
|
||||
}
|
||||
assertEquals(POIFSConstants.END_OF_CHAIN, ministore.getNextBlock(50));
|
||||
|
||||
fs.close();
|
||||
}
|
||||
}
|
||||
|
||||
@ -295,6 +303,8 @@ public final class TestNPOIFSFileSystem {
|
||||
for(int i=100; i<fs.getBigBlockSizeDetails().getBATEntriesPerBlock(); i++) {
|
||||
assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(i));
|
||||
}
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
// Quick check on 4096 byte blocks too
|
||||
@ -311,6 +321,8 @@ public final class TestNPOIFSFileSystem {
|
||||
assertEquals(i+1, fs.getNextBlock(i));
|
||||
}
|
||||
assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(11));
|
||||
|
||||
fs.close();
|
||||
}
|
||||
}
|
||||
|
||||
@ -348,6 +360,8 @@ public final class TestNPOIFSFileSystem {
|
||||
assertEquals((byte)0x00, b.get());
|
||||
assertEquals((byte)0x00, b.get());
|
||||
assertEquals((byte)0x00, b.get());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
// Quick check on 4096 byte blocks too
|
||||
@ -380,6 +394,8 @@ public final class TestNPOIFSFileSystem {
|
||||
assertEquals((byte)0x00, b.get());
|
||||
assertEquals((byte)0x00, b.get());
|
||||
assertEquals((byte)0x00, b.get());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
}
|
||||
|
||||
@ -591,6 +607,8 @@ public final class TestNPOIFSFileSystem {
|
||||
// Look inside another
|
||||
DirectoryEntry imageD = (DirectoryEntry)image;
|
||||
assertEquals(7, imageD.getEntryCount());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
}
|
||||
|
||||
@ -635,6 +653,8 @@ public final class TestNPOIFSFileSystem {
|
||||
ps = PropertySetFactory.create(inp);
|
||||
DocumentSummaryInformation dinf = (DocumentSummaryInformation)ps;
|
||||
assertEquals(131333, dinf.getOSVersion());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,6 @@ import org.apache.poi.poifs.common.POIFSConstants;
|
||||
/**
|
||||
* Tests for the Mini Store in the NIO POIFS
|
||||
*/
|
||||
@SuppressWarnings("resource")
|
||||
public final class TestNPOIFSMiniStore extends TestCase {
|
||||
private static final POIDataSamples _inst = POIDataSamples.getPOIFSInstance();
|
||||
|
||||
@ -103,6 +102,8 @@ public final class TestNPOIFSMiniStore extends TestCase {
|
||||
for(int i=181; i<fs.getBigBlockSizeDetails().getBATEntriesPerBlock(); i++) {
|
||||
assertEquals(POIFSConstants.UNUSED_BLOCK, ministore.getNextBlock(i));
|
||||
}
|
||||
|
||||
fs.close();
|
||||
}
|
||||
}
|
||||
|
||||
@ -168,6 +169,8 @@ public final class TestNPOIFSMiniStore extends TestCase {
|
||||
assertEquals((byte)0, b.get());
|
||||
assertEquals((byte)0, b.get());
|
||||
}
|
||||
|
||||
fs.close();
|
||||
}
|
||||
}
|
||||
|
||||
@ -198,6 +201,8 @@ public final class TestNPOIFSMiniStore extends TestCase {
|
||||
// Allocate it, then ask again
|
||||
ministore.setNextBlock(181, POIFSConstants.END_OF_CHAIN);
|
||||
assertEquals(182, ministore.getFreeBlock());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -240,6 +245,8 @@ public final class TestNPOIFSMiniStore extends TestCase {
|
||||
assertEquals(POIFSConstants.END_OF_CHAIN, ministore.getNextBlock(255)); // 2nd SBAT
|
||||
assertEquals(POIFSConstants.UNUSED_BLOCK, ministore.getNextBlock(256)); // 3rd SBAT
|
||||
assertEquals(POIFSConstants.UNUSED_BLOCK, ministore.getNextBlock(257)); // 3rd SBAT
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -322,5 +329,7 @@ public final class TestNPOIFSMiniStore extends TestCase {
|
||||
for(int i=193; i<256; i++) {
|
||||
assertEquals(POIFSConstants.UNUSED_BLOCK, ministore.getNextBlock(i));
|
||||
}
|
||||
|
||||
fs.close();
|
||||
}
|
||||
}
|
||||
|
@ -62,6 +62,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
assertEquals((byte)0x00, b.get());
|
||||
assertEquals((byte)0x00, b.get());
|
||||
assertEquals((byte)0x00, b.get());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -103,6 +105,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
assertEquals((byte)0x00, b98.get());
|
||||
assertEquals((byte)0x00, b98.get());
|
||||
assertEquals((byte)0x00, b98.get());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -157,6 +161,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
assertEquals((byte)0x01, b22.get());
|
||||
assertEquals((byte)0x02, b22.get());
|
||||
assertEquals((byte)0x00, b22.get());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -211,6 +217,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
assertEquals((byte)0x00, b2.get());
|
||||
assertEquals((byte)0x46, b2.get());
|
||||
assertEquals((byte)0x00, b2.get());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -249,6 +257,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
// Good, it was detected
|
||||
}
|
||||
assertEquals(true, i.hasNext());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -304,6 +314,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
assertEquals((byte)0x00, b180.get());
|
||||
assertEquals((byte)0x00, b180.get());
|
||||
assertEquals((byte)0x80, b180.get());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -334,6 +346,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
byte exp = (byte)(i%256);
|
||||
assertEquals(exp, data[i]);
|
||||
}
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -373,6 +387,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
byte exp = (byte)(i%256);
|
||||
assertEquals(exp, data[i]);
|
||||
}
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -417,6 +433,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
count++;
|
||||
}
|
||||
assertEquals(3, count);
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -507,6 +525,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(102));
|
||||
assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(103));
|
||||
assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(104));
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -547,6 +567,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
assertEquals(130, fs.getNextBlock(129));
|
||||
assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(130));
|
||||
assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(131));
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -600,6 +622,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
count++;
|
||||
}
|
||||
assertEquals(5, count);
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -790,6 +814,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
assertEquals((byte)0x42, b183.get(1));
|
||||
assertEquals((byte)0x81, b184.get(0));
|
||||
assertEquals((byte)0x82, b184.get(1));
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -823,6 +849,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
stream.updateContents(data);
|
||||
fail("Loop should have been detected but wasn't!");
|
||||
} catch(IllegalStateException e) {}
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -889,6 +917,8 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
}
|
||||
|
||||
assertEquals(false, it.hasNext());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1079,5 +1109,7 @@ public final class TestNPOIFSStream extends TestCase {
|
||||
normal = (DocumentEntry)fs.getRoot().getEntry("Normal");
|
||||
assertEquals(4096, normal.getSize());
|
||||
assertEquals(4096, ((DocumentNode)normal).getProperty().getSize());
|
||||
|
||||
fs.close();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user