Move one testcase with incorrect source location
remove some junit dependencies in example-code build: do not pass junit-jar to normal compile targets to avoid introducing it as dependency again Reformat code, fix warnings, ... git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1798202 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
938bb91c51
commit
05570364db
30
build.xml
30
build.xml
@ -325,12 +325,15 @@ under the License.
|
||||
<path id="main.classpath">
|
||||
<pathelement location="${main.commons-logging.jar}"/>
|
||||
<pathelement location="${main.commons-codec.jar}"/>
|
||||
<pathelement location="${main.log4j.jar}"/>
|
||||
<pathelement location="${main.commons-collections4.jar}"/>
|
||||
</path>
|
||||
|
||||
<!-- some libraries should only be required for compiling/running tests -->
|
||||
<path id="test.jar.classpath">
|
||||
<pathelement location="${main.junit.jar}"/>
|
||||
<pathelement location="${main.jmh.jar}"/>
|
||||
<pathelement location="${main.jmhAnnotation.jar}"/>
|
||||
<pathelement location="${main.hamcrest.jar}"/>
|
||||
<pathelement location="${main.commons-collections4.jar}"/>
|
||||
</path>
|
||||
|
||||
<path id="scratchpad.classpath">
|
||||
@ -375,6 +378,7 @@ under the License.
|
||||
|
||||
<path id="test.ooxml.classpath">
|
||||
<path refid="ooxml.classpath"/>
|
||||
<path refid="test.jar.classpath"/>
|
||||
<pathelement location="${ooxml.output.dir}"/>
|
||||
<pathelement location="${ooxml.output.test.dir}"/>
|
||||
<pathelement location="${main.output.test.dir}"/>
|
||||
@ -385,6 +389,7 @@ under the License.
|
||||
<pathelement location="${integration.src.test}"/>
|
||||
<path refid="scratchpad.classpath"/>
|
||||
<path refid="ooxml.classpath"/>
|
||||
<path refid="test.jar.classpath"/>
|
||||
<pathelement location="${main.output.test.dir}"/>
|
||||
<pathelement location="${ooxml.output.dir}"/>
|
||||
<pathelement location="${integration.output.test.dir}"/>
|
||||
@ -420,6 +425,7 @@ under the License.
|
||||
|
||||
<path id="test.excelant.classpath">
|
||||
<path refid="ooxml.classpath"/>
|
||||
<path refid="test.jar.classpath"/>
|
||||
<pathelement location="${ooxml.output.dir}"/>
|
||||
<pathelement location="${excelant.output.dir}"/>
|
||||
<pathelement location="${excelant.output.test.dir}"/>
|
||||
@ -857,6 +863,10 @@ under the License.
|
||||
includeantruntime="false">
|
||||
<!-- debug="${compile.debug}" -->
|
||||
<classpath refid="ooxml.classpath"/>
|
||||
|
||||
<!-- unfortunately JUnit is required here for OOXMLLite, we should rather move OOXMLLite
|
||||
to test or a separate folder to clean up dependencies -->
|
||||
<classpath location="${main.junit.jar}"/>
|
||||
</javac>
|
||||
|
||||
<jar basedir="${xmlbean.classes.dir}" destfile="@{classes-jar}" excludes="org/apache/**" level="9" />
|
||||
@ -918,6 +928,7 @@ under the License.
|
||||
includeantruntime="false">
|
||||
<classpath>
|
||||
<path refid="main.classpath"/>
|
||||
<path refid="test.jar.classpath"/>
|
||||
<pathelement path="${main.output.dir}"/>
|
||||
</classpath>
|
||||
</javac>
|
||||
@ -981,6 +992,7 @@ under the License.
|
||||
includeantruntime="false">
|
||||
<classpath>
|
||||
<path refid="scratchpad.classpath"/>
|
||||
<path refid="test.jar.classpath"/>
|
||||
<pathelement location="${scratchpad.output.dir}"/>
|
||||
<pathelement location="${main.output.test.dir}"/>
|
||||
</classpath>
|
||||
@ -1024,6 +1036,10 @@ under the License.
|
||||
<classpath>
|
||||
<path refid="ooxml.classpath"/>
|
||||
<path refid="ooxml.xmlsec.classpath"/>
|
||||
|
||||
<!-- unfortunately JUnit is required here for OOXMLLite, we should rather move OOXMLLite
|
||||
to test or a separate folder to clean up dependencies -->
|
||||
<pathelement location="${main.junit.jar}"/>
|
||||
</classpath>
|
||||
</javac>
|
||||
<!-- compile the tests -->
|
||||
@ -1114,6 +1130,7 @@ under the License.
|
||||
includeantruntime="false">
|
||||
<classpath>
|
||||
<path refid="excelant.classpath"/>
|
||||
<path refid="test.jar.classpath"/>
|
||||
<pathelement location="${excelant.output.dir}"/>
|
||||
<pathelement path="${main.output.test.dir}"/>
|
||||
</classpath>
|
||||
@ -1135,6 +1152,7 @@ under the License.
|
||||
<classpath>
|
||||
<path refid="scratchpad.classpath"/>
|
||||
<path refid="ooxml.classpath"/>
|
||||
<path refid="test.jar.classpath"/>
|
||||
<pathelement location="${ooxml.output.dir}"/>
|
||||
<pathelement location="${main.output.test.dir}"/>
|
||||
<pathelement location="${examples.output.dir}"/>
|
||||
@ -1274,6 +1292,7 @@ under the License.
|
||||
<junit fork="yes" forkmode="once" printsummary="yes" haltonfailure="${halt.on.test.failure}"
|
||||
failureproperty="main.test.failed" showoutput="true">
|
||||
<classpath refid="test.classpath"/>
|
||||
<classpath refid="test.jar.classpath"/>
|
||||
<syspropertyset refid="junit.properties"/>
|
||||
<jvmarg value="-ea"/>
|
||||
<jvmarg value="-Xmx256m"/>
|
||||
@ -1391,6 +1410,7 @@ under the License.
|
||||
<junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}"
|
||||
failureproperty="scratchpad.test.failed">
|
||||
<classpath refid="test.scratchpad.classpath"/>
|
||||
<classpath refid="test.jar.classpath"/>
|
||||
<syspropertyset refid="junit.properties"/>
|
||||
<jvmarg value="-ea"/>
|
||||
<!-- jvmarg value="-Duser.timezone=UTC"/ -->
|
||||
@ -1443,7 +1463,10 @@ under the License.
|
||||
<jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-@{type}.exec">
|
||||
<junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}"
|
||||
failureproperty="ooxml.test.failed">
|
||||
<classpath refid="@{classpath}"/>
|
||||
<classpath>
|
||||
<path refid="@{classpath}"/>
|
||||
<path refid="test.jar.classpath"/>
|
||||
</classpath>
|
||||
<syspropertyset refid="junit.properties"/>
|
||||
<jvmarg value="${maxpermsize}"/>
|
||||
<jvmarg value="-Xmx768M"/>
|
||||
@ -1476,6 +1499,7 @@ under the License.
|
||||
failureproperty="ooxml.xmlsec.test.failed">
|
||||
<classpath>
|
||||
<path refid="@{classpath}"/>
|
||||
<path refid="test.jar.classpath"/>
|
||||
<path refid="ooxml.xmlsec.classpath"/>
|
||||
</classpath>
|
||||
<syspropertyset refid="junit.properties"/>
|
||||
|
@ -19,8 +19,6 @@
|
||||
|
||||
package org.apache.poi.xwpf.usermodel.examples;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
@ -77,7 +75,7 @@ public class UpdateEmbeddedDoc {
|
||||
this.docFile = new File(filename);
|
||||
FileInputStream fis = null;
|
||||
if (!this.docFile.exists()) {
|
||||
throw new FileNotFoundException("The Word dcoument " + filename + " does not exist.");
|
||||
throw new FileNotFoundException("The Word document " + filename + " does not exist.");
|
||||
}
|
||||
try {
|
||||
// Open the Word document file and instantiate the XWPFDocument
|
||||
@ -90,7 +88,7 @@ public class UpdateEmbeddedDoc {
|
||||
}
|
||||
|
||||
/**
|
||||
* Called to update the embedded Excel workbook. As the format and structire
|
||||
* Called to update the embedded Excel workbook. As the format and structure
|
||||
* of the workbook are known in advance, all this code attempts to do is
|
||||
* write a new value into the first cell on the first row of the first
|
||||
* worksheet. Prior to executing this method, that cell will contain the
|
||||
@ -99,7 +97,7 @@ public class UpdateEmbeddedDoc {
|
||||
* @throws org.apache.poi.openxml4j.exceptions.OpenXML4JException
|
||||
* Rather
|
||||
* than use the specific classes (HSSF/XSSF) to handle the embedded
|
||||
* workbook this method uses those defeined in the SS stream. As
|
||||
* workbook this method uses those defined in the SS stream. As
|
||||
* a result, it might be the case that a SpreadsheetML file is
|
||||
* opened for processing, throwing this exception if that file is
|
||||
* invalid.
|
||||
@ -160,7 +158,7 @@ public class UpdateEmbeddedDoc {
|
||||
* @throws org.apache.poi.openxml4j.exceptions.OpenXML4JException
|
||||
* Rather
|
||||
* than use the specific classes (HSSF/XSSF) to handle the embedded
|
||||
* workbook this method uses those defeined in the SS stream. As
|
||||
* workbook this method uses those defined in the SS stream. As
|
||||
* a result, it might be the case that a SpreadsheetML file is
|
||||
* opened for processing, throwing this exception if that file is
|
||||
* invalid.
|
||||
@ -178,7 +176,9 @@ public class UpdateEmbeddedDoc {
|
||||
Sheet sheet = workbook.getSheetAt(SHEET_NUM);
|
||||
Row row = sheet.getRow(ROW_NUM);
|
||||
Cell cell = row.getCell(CELL_NUM);
|
||||
assertEquals(cell.getNumericCellValue(), NEW_VALUE, 0.0001);
|
||||
if(cell.getNumericCellValue() != NEW_VALUE) {
|
||||
throw new IllegalStateException("Failed to validate document content.");
|
||||
}
|
||||
} finally {
|
||||
IOUtils.closeQuietly(workbook);
|
||||
IOUtils.closeQuietly(is);
|
||||
@ -189,9 +189,6 @@ public class UpdateEmbeddedDoc {
|
||||
|
||||
/**
|
||||
* Code to test updating of the embedded Excel workbook.
|
||||
*
|
||||
* @param args
|
||||
* @throws OpenXML4JException
|
||||
*/
|
||||
public static void main(String[] args) throws IOException, OpenXML4JException {
|
||||
UpdateEmbeddedDoc ued = new UpdateEmbeddedDoc(args[0]);
|
||||
|
@ -27,47 +27,47 @@ import org.apache.poi.hwpf.extractor.WordExtractor;
|
||||
import org.junit.Test;
|
||||
|
||||
public class HWPFFileHandler extends POIFSFileHandler {
|
||||
@Override
|
||||
public void handleFile(InputStream stream, String path) throws Exception {
|
||||
HWPFDocument doc = new HWPFDocument(stream);
|
||||
assertNotNull(doc.getBookmarks());
|
||||
assertNotNull(doc.getCharacterTable());
|
||||
assertNotNull(doc.getEndnotes());
|
||||
|
||||
handlePOIDocument(doc);
|
||||
}
|
||||
@Override
|
||||
public void handleFile(InputStream stream, String path) throws Exception {
|
||||
HWPFDocument doc = new HWPFDocument(stream);
|
||||
assertNotNull(doc.getBookmarks());
|
||||
assertNotNull(doc.getCharacterTable());
|
||||
assertNotNull(doc.getEndnotes());
|
||||
|
||||
handlePOIDocument(doc);
|
||||
}
|
||||
|
||||
// a test-case to test this locally without executing the full TestAllFiles
|
||||
@Override
|
||||
// a test-case to test this locally without executing the full TestAllFiles
|
||||
@Override
|
||||
@Test
|
||||
public void test() throws Exception {
|
||||
public void test() throws Exception {
|
||||
File file = new File("test-data/document/52117.doc");
|
||||
|
||||
InputStream stream = new FileInputStream(file);
|
||||
try {
|
||||
handleFile(stream, file.getPath());
|
||||
} finally {
|
||||
stream.close();
|
||||
}
|
||||
|
||||
handleExtracting(file);
|
||||
|
||||
stream = new FileInputStream(file);
|
||||
try {
|
||||
WordExtractor extractor = new WordExtractor(stream);
|
||||
try {
|
||||
assertNotNull(extractor.getText());
|
||||
} finally {
|
||||
extractor.close();
|
||||
}
|
||||
} finally {
|
||||
stream.close();
|
||||
}
|
||||
}
|
||||
try {
|
||||
handleFile(stream, file.getPath());
|
||||
} finally {
|
||||
stream.close();
|
||||
}
|
||||
|
||||
handleExtracting(file);
|
||||
|
||||
stream = new FileInputStream(file);
|
||||
try {
|
||||
WordExtractor extractor = new WordExtractor(stream);
|
||||
try {
|
||||
assertNotNull(extractor.getText());
|
||||
} finally {
|
||||
extractor.close();
|
||||
}
|
||||
} finally {
|
||||
stream.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExtractingOld() throws Exception {
|
||||
File file = new File("test-data/document/52117.doc");
|
||||
handleExtracting(file);
|
||||
}
|
||||
@Test
|
||||
public void testExtractingOld() throws Exception {
|
||||
File file = new File("test-data/document/52117.doc");
|
||||
handleExtracting(file);
|
||||
}
|
||||
}
|
||||
|
@ -91,6 +91,7 @@ public class SheetUtil {
|
||||
public void evaluateAll() {}
|
||||
@Override
|
||||
public int evaluateFormulaCell(Cell cell) {
|
||||
//noinspection deprecation
|
||||
return cell.getCachedFormulaResultType();
|
||||
}
|
||||
/**
|
||||
@ -157,9 +158,9 @@ public class SheetUtil {
|
||||
AttributedString str = new AttributedString(txt);
|
||||
copyAttributes(font, str, 0, txt.length());
|
||||
|
||||
if (rt.numFormattingRuns() > 0) {
|
||||
/*if (rt.numFormattingRuns() > 0) {
|
||||
// TODO: support rich text fragments
|
||||
}
|
||||
}*/
|
||||
|
||||
width = getCellWidth(defaultCharWidth, colspan, style, width, str);
|
||||
}
|
||||
@ -329,7 +330,7 @@ public class SheetUtil {
|
||||
/**
|
||||
* Copy text attributes from the supplied Font to Java2D AttributedString
|
||||
*/
|
||||
private static void copyAttributes(Font font, AttributedString str, int startIdx, int endIdx) {
|
||||
private static void copyAttributes(Font font, AttributedString str, @SuppressWarnings("SameParameterValue") int startIdx, int endIdx) {
|
||||
str.addAttribute(TextAttribute.FAMILY, font.getFontName(), startIdx, endIdx);
|
||||
str.addAttribute(TextAttribute.SIZE, (float)font.getFontHeightInPoints());
|
||||
if (font.getBold()) str.addAttribute(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, startIdx, endIdx);
|
||||
@ -360,9 +361,9 @@ public class SheetUtil {
|
||||
* Use this where you want to know if the given cell is explicitly defined
|
||||
* or not.
|
||||
*
|
||||
* @param sheet
|
||||
* @param rowIx
|
||||
* @param colIx
|
||||
* @param sheet The workbook sheet to look at.
|
||||
* @param rowIx The 0-based index of the row.
|
||||
* @param colIx The 0-based index of the cell.
|
||||
* @return cell at the given location, or null if not defined
|
||||
* @throws NullPointerException if sheet is null
|
||||
*/
|
||||
@ -384,10 +385,10 @@ public class SheetUtil {
|
||||
* then will return the cell itself.
|
||||
* <p>If there is no cell defined at the given co-ordinates, will return
|
||||
* null.
|
||||
*
|
||||
* @param sheet
|
||||
* @param rowIx
|
||||
* @param colIx
|
||||
*
|
||||
* @param sheet The workbook sheet to look at.
|
||||
* @param rowIx The 0-based index of the row.
|
||||
* @param colIx The 0-based index of the cell.
|
||||
* @return cell at the given location, its base merged cell, or null if not defined
|
||||
* @throws NullPointerException if sheet is null
|
||||
*/
|
||||
|
@ -143,9 +143,7 @@ public final class OOXMLLite {
|
||||
copyFile(cls.getResourceAsStream('/' + classRef), destFile);
|
||||
|
||||
if(cls.isInterface()){
|
||||
/**
|
||||
* Copy classes and interfaces declared as members of this class
|
||||
*/
|
||||
/// Copy classes and interfaces declared as members of this class
|
||||
for(Class<?> fc : cls.getDeclaredClasses()){
|
||||
className = fc.getName();
|
||||
classRef = className.replace('.', '/') + ".class";
|
||||
@ -235,7 +233,6 @@ public final class OOXMLLite {
|
||||
}
|
||||
} catch (Throwable e) { // NOSONAR
|
||||
System.out.println("Class " + cls + " is not in classpath");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -948,15 +948,16 @@ public final class TestPackage {
|
||||
|
||||
// bug 60128
|
||||
@Test
|
||||
public void testCorruptFile() throws IOException {
|
||||
public void testCorruptFile() throws IOException, InvalidFormatException {
|
||||
OPCPackage pkg = null;
|
||||
File file = OpenXML4JTestDataSamples.getSampleFile("invalid.xlsx");
|
||||
try {
|
||||
pkg = OPCPackage.open(file, PackageAccess.READ);
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.getClass().getName());
|
||||
} catch (NotOfficeXmlFileException e) {
|
||||
/*System.out.println(e.getClass().getName());
|
||||
System.out.println(e.getMessage());
|
||||
e.printStackTrace();
|
||||
e.printStackTrace();*/
|
||||
// ignore exception
|
||||
} finally {
|
||||
if (pkg != null) {
|
||||
pkg.close();
|
||||
|
@ -19,128 +19,76 @@ package org.apache.poi.hwpf.model;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
import org.apache.poi.util.BitField;
|
||||
import org.apache.poi.util.BitFieldFactory;
|
||||
import org.apache.poi.util.Internal;
|
||||
import org.apache.poi.util.LittleEndian;
|
||||
import org.apache.poi.util.StringUtil;
|
||||
|
||||
@Internal
|
||||
public final class PieceDescriptor
|
||||
{
|
||||
|
||||
short descriptor;
|
||||
private static BitField fNoParaLast = BitFieldFactory.getInstance(0x01);
|
||||
private static BitField fPaphNil = BitFieldFactory.getInstance(0x02);
|
||||
private static BitField fCopied = BitFieldFactory.getInstance(0x04);
|
||||
int fc;
|
||||
PropertyModifier prm;
|
||||
boolean unicode = false;
|
||||
private final Charset charset;
|
||||
|
||||
public final class PieceDescriptor {
|
||||
private final short descriptor;
|
||||
int fc; // used from the outside?!?
|
||||
private final PropertyModifier prm;
|
||||
private final boolean unicode;
|
||||
private final Charset charset;
|
||||
|
||||
public PieceDescriptor(byte[] buf, int offset) {
|
||||
this(buf, offset, null);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* This initializer should only be used for HWPFOldDocuments.
|
||||
*
|
||||
* @param buf
|
||||
* @param offset
|
||||
* @param buf The buffer to read data from
|
||||
* @param offset The offset into the buffer to start reading from
|
||||
* @param charset which charset to use if this is not unicode
|
||||
*/
|
||||
public PieceDescriptor(byte[] buf, int offset, Charset charset) {
|
||||
descriptor = LittleEndian.getShort(buf, offset);
|
||||
offset += LittleEndian.SHORT_SIZE;
|
||||
fc = LittleEndian.getInt(buf, offset);
|
||||
offset += LittleEndian.INT_SIZE;
|
||||
prm = new PropertyModifier(LittleEndian.getShort(buf, offset));
|
||||
if (charset == null) {
|
||||
// see if this piece uses unicode.
|
||||
//From the documentation: If the second most significant bit
|
||||
//is clear, then this indicates the actual file offset of the Unicode character (two bytes). If the
|
||||
//second most significant bit is set, then the actual address of the codepage-1252
|
||||
//compressed version of the Unicode character (one byte), is actually at the offset indicated
|
||||
//by clearing this bit and dividing by two.
|
||||
if ((fc & 0x40000000) == 0) {
|
||||
unicode = true;
|
||||
this.charset = null;
|
||||
public PieceDescriptor(byte[] buf, int offset, Charset charset) {
|
||||
descriptor = LittleEndian.getShort(buf, offset);
|
||||
offset += LittleEndian.SHORT_SIZE;
|
||||
fc = LittleEndian.getInt(buf, offset);
|
||||
offset += LittleEndian.INT_SIZE;
|
||||
prm = new PropertyModifier(LittleEndian.getShort(buf, offset));
|
||||
if (charset == null) {
|
||||
// see if this piece uses unicode.
|
||||
//From the documentation: If the second most significant bit
|
||||
//is clear, then this indicates the actual file offset of the Unicode character (two bytes). If the
|
||||
//second most significant bit is set, then the actual address of the codepage-1252
|
||||
//compressed version of the Unicode character (one byte), is actually at the offset indicated
|
||||
//by clearing this bit and dividing by two.
|
||||
if ((fc & 0x40000000) == 0) {
|
||||
unicode = true;
|
||||
this.charset = null;
|
||||
} else {
|
||||
unicode = false;
|
||||
fc &= ~(0x40000000);//gives me FC in doc stream
|
||||
fc /= 2;
|
||||
this.charset = StringUtil.WIN_1252;
|
||||
}
|
||||
} else {
|
||||
unicode = false;
|
||||
fc &= ~(0x40000000);//gives me FC in doc stream
|
||||
fc /= 2;
|
||||
this.charset = StringUtil.WIN_1252;
|
||||
if (charset == StringUtil.UTF16LE) {
|
||||
unicode = true;
|
||||
} else {
|
||||
unicode = false;
|
||||
}
|
||||
this.charset = charset;
|
||||
}
|
||||
} else {
|
||||
if (charset == StringUtil.UTF16LE) {
|
||||
unicode = true;
|
||||
}
|
||||
this.charset = charset;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public int getFilePosition()
|
||||
{
|
||||
return fc;
|
||||
}
|
||||
|
||||
public void setFilePosition(int pos)
|
||||
{
|
||||
fc = pos;
|
||||
}
|
||||
|
||||
public boolean isUnicode()
|
||||
{
|
||||
return unicode;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return charset to use if this is not a Unicode PieceDescriptor
|
||||
* this can be <code>null</code>
|
||||
*/
|
||||
public Charset getCharset() {
|
||||
return charset;
|
||||
}
|
||||
|
||||
public PropertyModifier getPrm()
|
||||
{
|
||||
return prm;
|
||||
}
|
||||
|
||||
protected byte[] toByteArray()
|
||||
{
|
||||
// set up the fc
|
||||
int tempFc = fc;
|
||||
if (!unicode)
|
||||
{
|
||||
tempFc *= 2;
|
||||
tempFc |= (0x40000000);
|
||||
public int getFilePosition() {
|
||||
return fc;
|
||||
}
|
||||
|
||||
int offset = 0;
|
||||
byte[] buf = new byte[8];
|
||||
LittleEndian.putShort(buf, offset, descriptor);
|
||||
offset += LittleEndian.SHORT_SIZE;
|
||||
LittleEndian.putInt(buf, offset, tempFc);
|
||||
offset += LittleEndian.INT_SIZE;
|
||||
LittleEndian.putShort(buf, offset, prm.getValue());
|
||||
public void setFilePosition(int pos) {
|
||||
fc = pos;
|
||||
}
|
||||
|
||||
return buf;
|
||||
|
||||
}
|
||||
|
||||
public static int getSizeInBytes()
|
||||
{
|
||||
return 8;
|
||||
}
|
||||
public boolean isUnicode() {
|
||||
return unicode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + descriptor;
|
||||
@ -149,35 +97,66 @@ public final class PieceDescriptor
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return charset to use if this is not a Unicode PieceDescriptor
|
||||
* this can be <code>null</code>
|
||||
*/
|
||||
public Charset getCharset() {
|
||||
return charset;
|
||||
}
|
||||
|
||||
public PropertyModifier getPrm() {
|
||||
return prm;
|
||||
}
|
||||
|
||||
protected byte[] toByteArray() {
|
||||
// set up the fc
|
||||
int tempFc = fc;
|
||||
if (!unicode) {
|
||||
tempFc *= 2;
|
||||
tempFc |= (0x40000000);
|
||||
}
|
||||
|
||||
int offset = 0;
|
||||
byte[] buf = new byte[8];
|
||||
LittleEndian.putShort(buf, offset, descriptor);
|
||||
offset += LittleEndian.SHORT_SIZE;
|
||||
LittleEndian.putInt(buf, offset, tempFc);
|
||||
offset += LittleEndian.INT_SIZE;
|
||||
LittleEndian.putShort(buf, offset, prm.getValue());
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
public static int getSizeInBytes() {
|
||||
return 8;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object obj )
|
||||
{
|
||||
if ( this == obj )
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj)
|
||||
return true;
|
||||
if ( obj == null )
|
||||
if (obj == null)
|
||||
return false;
|
||||
if ( getClass() != obj.getClass() )
|
||||
if (getClass() != obj.getClass())
|
||||
return false;
|
||||
PieceDescriptor other = (PieceDescriptor) obj;
|
||||
if ( descriptor != other.descriptor )
|
||||
if (descriptor != other.descriptor)
|
||||
return false;
|
||||
if ( prm == null )
|
||||
{
|
||||
if ( other.prm != null )
|
||||
if (prm == null) {
|
||||
if (other.prm != null)
|
||||
return false;
|
||||
}
|
||||
else if ( !prm.equals( other.prm ) )
|
||||
} else if (!prm.equals(other.prm))
|
||||
return false;
|
||||
if ( unicode != other.unicode )
|
||||
if (unicode != other.unicode)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
public String toString() {
|
||||
return "PieceDescriptor (pos: " + getFilePosition() + "; "
|
||||
+ ( isUnicode() ? "unicode" : "non-unicode" ) + "; prm: "
|
||||
+ (isUnicode() ? "unicode" : "non-unicode") + "; prm: "
|
||||
+ getPrm() + ")";
|
||||
}
|
||||
}
|
||||
|
@ -37,8 +37,8 @@ import static org.junit.Assert.*;
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
|
||||
/**
|
||||
* Common superclass for testing {@link org.apache.poi.xssf.usermodel.XSSFCell} and
|
||||
* {@link org.apache.poi.hssf.usermodel.HSSFCell}
|
||||
* Common superclass for testing {@link HSSFCell}, org.apache.poi.xssf.usermodel.XSSFCell and
|
||||
* org.apache.poi.xssf.streaming.SXSSFCell
|
||||
*/
|
||||
public abstract class BaseTestSheet {
|
||||
private static final int ROW_COUNT = 40000;
|
||||
@ -417,7 +417,7 @@ public abstract class BaseTestSheet {
|
||||
//should exist now!
|
||||
assertTrue("there isn't more than one merged region in there", 1 <= sheet.getNumMergedRegions());
|
||||
region = sheet.getMergedRegion(0);
|
||||
assertEquals("the merged row to doesnt match the one we put in ", 4, region.getLastRow());
|
||||
assertEquals("the merged row to doesn't match the one we put in ", 4, region.getLastRow());
|
||||
|
||||
wb.close();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user