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