ソースを参照

Fixed unused imports compiler warnings (and some others)

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@805262 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_5-FINAL
Josh Micich 14年前
コミット
e918a0cd0d
100個のファイルの変更1920行の追加2480行の削除
  1. 0
    195
      src/java/org/apache/poi/hssf/dev/EFHSSF.java
  2. 21
    15
      src/java/org/apache/poi/hssf/model/CommentShape.java
  3. 60
    61
      src/java/org/apache/poi/hssf/model/Workbook.java
  4. 33
    34
      src/java/org/apache/poi/hssf/record/CFRuleRecord.java
  5. 0
    1
      src/java/org/apache/poi/hssf/record/ContinueRecord.java
  6. 0
    1
      src/java/org/apache/poi/hssf/record/RecordFactory.java
  7. 2
    3
      src/java/org/apache/poi/hssf/record/SelectionRecord.java
  8. 9
    10
      src/java/org/apache/poi/hssf/record/SubRecord.java
  9. 17
    18
      src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java
  10. 1
    2
      src/java/org/apache/poi/hssf/record/formula/RefPtgBase.java
  11. 0
    1
      src/java/org/apache/poi/hssf/record/formula/atp/ParityFunction.java
  12. 1
    2
      src/java/org/apache/poi/hssf/record/formula/atp/YearFrac.java
  13. 1
    7
      src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java
  14. 24
    28
      src/java/org/apache/poi/hssf/usermodel/HSSFCreationHelper.java
  15. 2
    13
      src/java/org/apache/poi/hssf/usermodel/HSSFDataFormatter.java
  16. 0
    3
      src/java/org/apache/poi/hssf/usermodel/HSSFTextbox.java
  17. 55
    64
      src/java/org/apache/poi/poifs/dev/POIFSLister.java
  18. 20
    50
      src/java/org/apache/poi/poifs/property/DirectoryProperty.java
  19. 11
    38
      src/java/org/apache/poi/poifs/property/PropertyTable.java
  20. 2
    18
      src/java/org/apache/poi/poifs/property/RootProperty.java
  21. 1
    7
      src/java/org/apache/poi/poifs/storage/BATBlock.java
  22. 9
    31
      src/java/org/apache/poi/poifs/storage/BlockAllocationTableReader.java
  23. 4
    34
      src/java/org/apache/poi/poifs/storage/BlockAllocationTableWriter.java
  24. 7
    30
      src/java/org/apache/poi/poifs/storage/BlockListImpl.java
  25. 0
    7
      src/java/org/apache/poi/poifs/storage/HeaderBlockConstants.java
  26. 4
    12
      src/java/org/apache/poi/poifs/storage/PropertyBlock.java
  27. 3
    10
      src/java/org/apache/poi/poifs/storage/SmallBlockTableReader.java
  28. 9
    14
      src/java/org/apache/poi/util/IntList.java
  29. 3
    8
      src/java/org/apache/poi/util/NullLogger.java
  30. 0
    4
      src/java/org/apache/poi/util/ShortList.java
  31. 0
    1
      src/ooxml/java/org/apache/poi/POIXMLDocument.java
  32. 97
    99
      src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
  33. 28
    29
      src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCreationHelper.java
  34. 10
    11
      src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
  35. 176
    147
      src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java
  36. 17
    20
      src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
  37. 5
    7
      src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java
  38. 4
    8
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
  39. 2
    15
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java
  40. 8
    12
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java
  41. 2
    5
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java
  42. 0
    1
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPicture.java
  43. 4
    6
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java
  44. 4
    4
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPrintSetup.java
  45. 5
    21
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
  46. 1
    13
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java
  47. 27
    24
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
  48. 126
    131
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
  49. 3
    5
      src/ooxml/testcases/org/apache/poi/xssf/util/TestCTColComparator.java
  50. 20
    25
      src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java
  51. 1
    5
      src/scratchpad/src/org/apache/poi/hdf/extractor/StyleSheet.java
  52. 23
    48
      src/scratchpad/src/org/apache/poi/hdf/model/HDFObjectFactory.java
  53. 0
    3
      src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/FileInformationBlock.java
  54. 1
    4
      src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/StyleSheet.java
  55. 0
    4
      src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/CHPAbstractType.java
  56. 0
    1
      src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/DOPAbstractType.java
  57. 0
    2
      src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/FIBAbstractType.java
  58. 0
    4
      src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/PAPAbstractType.java
  59. 0
    5
      src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/SEPAbstractType.java
  60. 0
    6
      src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TAPAbstractType.java
  61. 0
    5
      src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TCAbstractType.java
  62. 3
    4
      src/scratchpad/src/org/apache/poi/hslf/EncryptedSlideShow.java
  63. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/blip/EMF.java
  64. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/blip/Metafile.java
  65. 6
    6
      src/scratchpad/src/org/apache/poi/hslf/blip/PICT.java
  66. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/blip/WMF.java
  67. 0
    2
      src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowDumper.java
  68. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java
  69. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/dev/TextStyleListing.java
  70. 4
    9
      src/scratchpad/src/org/apache/poi/hslf/dev/UserEditAndPersistListing.java
  71. 0
    2
      src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java
  72. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/model/Freeform.java
  73. 0
    4
      src/scratchpad/src/org/apache/poi/hslf/model/MasterSheet.java
  74. 0
    2
      src/scratchpad/src/org/apache/poi/hslf/model/Picture.java
  75. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/model/Placeholder.java
  76. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/model/Shape.java
  77. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java
  78. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/model/TableCell.java
  79. 16
    14
      src/scratchpad/src/org/apache/poi/hslf/model/TextPainter.java
  80. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java
  81. 11
    13
      src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java
  82. 1
    4
      src/scratchpad/src/org/apache/poi/hslf/record/AnimationInfoAtom.java
  83. 1
    4
      src/scratchpad/src/org/apache/poi/hslf/record/DocumentEncryptionAtom.java
  84. 0
    6
      src/scratchpad/src/org/apache/poi/hslf/record/ExAviMovie.java
  85. 0
    5
      src/scratchpad/src/org/apache/poi/hslf/record/ExControl.java
  86. 5
    10
      src/scratchpad/src/org/apache/poi/hslf/record/ExHyperlinkAtom.java
  87. 0
    2
      src/scratchpad/src/org/apache/poi/hslf/record/ExMediaAtom.java
  88. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/record/FontEntityAtom.java
  89. 6
    11
      src/scratchpad/src/org/apache/poi/hslf/record/InteractiveInfoAtom.java
  90. 20
    25
      src/scratchpad/src/org/apache/poi/hslf/record/MainMaster.java
  91. 0
    2
      src/scratchpad/src/org/apache/poi/hslf/record/OEShapeAtom.java
  92. 40
    43
      src/scratchpad/src/org/apache/poi/hslf/record/PPDrawing.java
  93. 0
    1
      src/scratchpad/src/org/apache/poi/hslf/record/PPDrawingGroup.java
  94. 1
    7
      src/scratchpad/src/org/apache/poi/hslf/record/RoundTripHFPlaceholder12.java
  95. 30
    32
      src/scratchpad/src/org/apache/poi/hslf/record/SlideListWithText.java
  96. 0
    2
      src/scratchpad/src/org/apache/poi/hslf/record/SoundCollection.java
  97. 0
    3
      src/scratchpad/src/org/apache/poi/hslf/record/SoundData.java
  98. 0
    3
      src/scratchpad/src/org/apache/poi/hslf/record/TextRulerAtom.java
  99. 913
    860
      src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
  100. 0
    0
      src/scratchpad/src/org/apache/poi/hwpf/model/DocumentProperties.java

+ 0
- 195
src/java/org/apache/poi/hssf/dev/EFHSSF.java ファイルの表示

@@ -1,195 +0,0 @@
/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */


package org.apache.poi.hssf.dev;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.IOException;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.hssf.record.*;
import org.apache.poi.hssf.eventmodel.*;
import org.apache.poi.hssf.eventusermodel.*;
import org.apache.poi.hssf.usermodel.*;

import org.apache.poi.hssf.eventusermodel.HSSFRequest;
import org.apache.poi.hssf.eventusermodel.HSSFListener;
import org.apache.poi.hssf.eventusermodel.HSSFEventFactory;

/**
* Event Factory version of HSSF test class.
* @author andy
*/
//JMH
//public class EFHSSF
//{
// String infile;
// String outfile;
// HSSFWorkbook workbook = null;
// HSSFSheet cursheet = null;
//
// /** Creates a new instance of EFHSSF */
//
// public EFHSSF()
// {
// }
//
// public void setInputFile(String infile)
// {
// this.infile = infile;
// }
//
// public void setOutputFile(String outfile)
// {
// this.outfile = outfile;
// }
//
// public void run()
// throws IOException
// {
// FileInputStream fin = new FileInputStream(infile);
// POIFSFileSystem poifs = new POIFSFileSystem(fin);
// InputStream din = poifs.createDocumentInputStream("Workbook");
// HSSFRequest req = new HSSFRequest();
//
// req.addListenerForAllRecords(new EFHSSFListener(this));
// HSSFEventFactory factory = new HSSFEventFactory();
//
// factory.processEvents(req, din);
// fin.close();
// din.close();
// FileOutputStream fout = new FileOutputStream(outfile);
//
// workbook.write(fout);
// fout.close();
// System.out.println("done.");
// }
//
// public void recordHandler(Record record)
// {
// HSSFRow row = null;
// HSSFCell cell = null;
// int sheetnum = -1;
//
// switch (record.getSid())
// {
//
// case BOFRecord.sid :
// BOFRecord bof = ( BOFRecord ) record;
//
// if (bof.getType() == bof.TYPE_WORKBOOK)
// {
// workbook = new HSSFWorkbook();
// }
// else if (bof.getType() == bof.TYPE_WORKSHEET)
// {
// sheetnum++;
// cursheet = workbook.getSheetAt(sheetnum);
// }
// break;
//
// case BoundSheetRecord.sid :
// BoundSheetRecord bsr = ( BoundSheetRecord ) record;
//
// workbook.createSheet(bsr.getSheetname());
// break;
//
// case RowRecord.sid :
// RowRecord rowrec = ( RowRecord ) record;
//
// cursheet.createRow(rowrec.getRowNumber());
// break;
//
// case NumberRecord.sid :
// NumberRecord numrec = ( NumberRecord ) record;
//
// row = cursheet.getRow(numrec.getRow());
// cell = row.createCell(numrec.getColumn(),
// HSSFCell.CELL_TYPE_NUMERIC);
// cell.setCellValue(numrec.getValue());
// break;
//
// case SSTRecord.sid :
// SSTRecord sstrec = ( SSTRecord ) record;
//
// for (int k = 0; k < sstrec.getNumUniqueStrings(); k++)
// {
// workbook.addSSTString(new UnicodeString(sstrec.getString(k)));
// }
// break;
//
// case LabelSSTRecord.sid :
// LabelSSTRecord lrec = ( LabelSSTRecord ) record;
//
// row = cursheet.getRow(lrec.getRow());
// cell = row.createCell(lrec.getColumn(),
// HSSFCell.CELL_TYPE_STRING);
// cell.setCellValue(workbook.getSSTString(lrec.getSSTIndex()));
// break;
// }
// }
//
// public static void main(String [] args)
// {
// if ((args.length < 2) || !args[ 0 ].equals("--help"))
// {
// try
// {
// EFHSSF viewer = new EFHSSF();
//
// viewer.setInputFile(args[ 0 ]);
// viewer.setOutputFile(args[ 1 ]);
// viewer.run();
// }
// catch (IOException e)
// {
// e.printStackTrace();
// }
// }
// else
// {
// System.out.println("EFHSSF");
// System.out.println(
// "General testbed for HSSFEventFactory based testing and "
// + "Code examples");
// System.out.println("Usage: java org.apache.poi.hssf.dev.EFHSSF "
// + "file1 file2");
// System.out.println(
// " --will rewrite the file reading with the event api");
// System.out.println("and writing with the standard API");
// }
// }
//}
//
//class EFHSSFListener
// implements HSSFListener
//{
// EFHSSF efhssf;
//
// public EFHSSFListener(EFHSSF efhssf)
// {
// this.efhssf = efhssf;
// }
//
// public void processRecord(Record record)
// {
// efhssf.recordHandler(record);
// }
//}

+ 21
- 15
src/java/org/apache/poi/hssf/model/CommentShape.java ファイルの表示

@@ -14,16 +14,23 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.hssf.model;

import org.apache.poi.hssf.record.*;
import java.util.Iterator;
import java.util.List;

import org.apache.poi.ddf.EscherOptRecord;
import org.apache.poi.ddf.EscherProperties;
import org.apache.poi.ddf.EscherProperty;
import org.apache.poi.ddf.EscherSimpleProperty;
import org.apache.poi.hssf.record.CommonObjectDataSubRecord;
import org.apache.poi.hssf.record.NoteRecord;
import org.apache.poi.hssf.record.NoteStructureSubRecord;
import org.apache.poi.hssf.record.ObjRecord;
import org.apache.poi.hssf.record.SubRecord;
import org.apache.poi.hssf.usermodel.HSSFComment;
import org.apache.poi.hssf.usermodel.HSSFShape;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.ddf.*;

import java.util.List;
import java.util.Iterator;

/**
* Represents a cell comment.
@@ -32,9 +39,9 @@ import java.util.Iterator;
*
* @author Yegor Kozlov
*/
public class CommentShape extends TextboxShape {
public final class CommentShape extends TextboxShape {

private NoteRecord note;
private NoteRecord _note;

/**
* Creates the low-level records for a comment.
@@ -46,10 +53,10 @@ public class CommentShape extends TextboxShape {
{
super(hssfShape, shapeId);

note = createNoteRecord(hssfShape, shapeId);
_note = createNoteRecord(hssfShape, shapeId);

ObjRecord obj = getObjRecord();
List records = obj.getSubRecords();
List<SubRecord> records = obj.getSubRecords();
int cmoIdx = 0;
for (int i = 0; i < records.size(); i++) {
Object r = records.get(i);
@@ -96,9 +103,9 @@ public class CommentShape extends TextboxShape {
super.addStandardOptions(shape, opt);

//remove unnecessary properties inherited from TextboxShape
java.util.List props = opt.getEscherProperties();
for ( Iterator iterator = props.iterator(); iterator.hasNext(); ) {
EscherProperty prop = (EscherProperty) iterator.next();
List<EscherProperty> props = opt.getEscherProperties();
for (Iterator<EscherProperty> iterator = props.iterator(); iterator.hasNext(); ) {
EscherProperty prop = iterator.next();
switch (prop.getId()){
case EscherProperties.TEXT__TEXTLEFT:
case EscherProperties.TEXT__TEXTRIGHT:
@@ -127,7 +134,6 @@ public class CommentShape extends TextboxShape {
*/
public NoteRecord getNoteRecord()
{
return note;
return _note;
}

}

+ 60
- 61
src/java/org/apache/poi/hssf/model/Workbook.java ファイルの表示

@@ -72,7 +72,6 @@ import org.apache.poi.hssf.record.StyleRecord;
import org.apache.poi.hssf.record.SupBookRecord;
import org.apache.poi.hssf.record.TabIdRecord;
import org.apache.poi.hssf.record.UnicodeString;
import org.apache.poi.hssf.record.UnknownRecord;
import org.apache.poi.hssf.record.UseSelFSRecord;
import org.apache.poi.hssf.record.WindowOneRecord;
import org.apache.poi.hssf.record.WindowProtectRecord;
@@ -271,19 +270,19 @@ public final class Workbook implements Model {
case WindowOneRecord.sid:
if (log.check( POILogger.DEBUG ))
log.log(DEBUG, "found WindowOneRecord at " + k);
retval.windowOne = (WindowOneRecord) rec;
retval.windowOne = (WindowOneRecord) rec;
break;
case WriteAccessRecord.sid:
case WriteAccessRecord.sid:
if (log.check( POILogger.DEBUG ))
log.log(DEBUG, "found WriteAccess at " + k);
retval.writeAccess = (WriteAccessRecord) rec;
break;
case WriteProtectRecord.sid:
case WriteProtectRecord.sid:
if (log.check( POILogger.DEBUG ))
log.log(DEBUG, "found WriteProtect at " + k);
retval.writeProtect = (WriteProtectRecord) rec;
break;
case FileSharingRecord.sid:
case FileSharingRecord.sid:
if (log.check( POILogger.DEBUG ))
log.log(DEBUG, "found FileSharing at " + k);
retval.fileShare = (FileSharingRecord) rec;
@@ -296,7 +295,7 @@ public final class Workbook implements Model {
// retval.records.supbookpos = retval.records.bspos + 1;
// retval.records.namepos = retval.records.supbookpos + 1;
// }
// Look for other interesting values that
// follow the EOFRecord
for ( ; k < recs.size(); k++) {
@@ -307,7 +306,7 @@ public final class Workbook implements Model {
break;
}
}
if (retval.windowOne == null) {
retval.windowOne = createWindowOne();
}
@@ -388,7 +387,7 @@ public final class Workbook implements Model {
retval.records.setBspos(records.size() - 1);
}
records.add( retval.createCountry() );
for ( int k = 0; k < nBoundSheets; k++ ) {
for ( int k = 0; k < nBoundSheets; k++ ) {
retval.getOrCreateLinkTable().checkExternSheet(k);
}
retval.sst = new SSTRecord();
@@ -452,7 +451,7 @@ public final class Workbook implements Model {

return retval;
}
/**
* Retrieves the index of the given font
*/
@@ -468,7 +467,7 @@ public final class Workbook implements Model {
return i;
}
}
throw new IllegalArgumentException("Could not find that font!");
throw new IllegalArgumentException("Could not find that font!");
}

/**
@@ -487,10 +486,10 @@ public final class Workbook implements Model {
numfonts++;
return rec;
}
/**
* Removes the given font record from the
* file's list. This will make all
* file's list. This will make all
* subsequent font indicies drop by one,
* so you'll need to update those yourself!
*/
@@ -553,7 +552,7 @@ public final class Workbook implements Model {
}

/**
* Determines whether a workbook contains the provided sheet name. For the purpose of
* Determines whether a workbook contains the provided sheet name. For the purpose of
* comparison, long names are truncated to 31 chars.
*
* @param name the name to test (case insensitive match)
@@ -580,18 +579,18 @@ public final class Workbook implements Model {
}
return false;
}
/**
* sets the order of appearance for a given sheet.
*
* @param sheetname the name of the sheet to reorder
* @param pos the position that we want to insert the sheet into (0 based)
*/
public void setSheetOrder(String sheetname, int pos ) {
int sheetNumber = getSheetIndex(sheetname);
//remove the sheet that needs to be reordered and place it in the spot we want
boundsheets.add(pos, boundsheets.remove(sheetNumber));
boundsheets.add(pos, boundsheets.remove(sheetNumber));
}

/**
@@ -606,7 +605,7 @@ public final class Workbook implements Model {

/**
* Gets the hidden flag for a given sheet.
* Note that a sheet could instead be
* Note that a sheet could instead be
* set to be very hidden, which is different
* ({@link #isSheetVeryHidden(int)})
*
@@ -619,8 +618,8 @@ public final class Workbook implements Model {

/**
* Gets the very hidden flag for a given sheet.
* This is different from the normal
* hidden flag
* This is different from the normal
* hidden flag
* ({@link #isSheetHidden(int)})
*
* @param sheetnum the sheet number (0 based)
@@ -632,20 +631,20 @@ public final class Workbook implements Model {

/**
* Hide or unhide a sheet
*
*
* @param sheetnum The sheet number
* @param hidden True to mark the sheet as hidden, false otherwise
*/
public void setSheetHidden(int sheetnum, boolean hidden) {
getBoundSheetRec(sheetnum).setHidden(hidden);
}
/**
* Hide or unhide a sheet.
* 0 = not hidden
* 1 = hidden
* 2 = very hidden.
*
*
* @param sheetnum The sheet number
* @param hidden 0 for not hidden, 1 for hidden, 2 for very hidden
*/
@@ -664,8 +663,8 @@ public final class Workbook implements Model {
bsr.setHidden(h);
bsr.setVeryHidden(vh);
}
/**
* get the sheet's index
* @param name sheet name
@@ -713,18 +712,18 @@ public final class Workbook implements Model {
boundsheets.remove(sheetIndex);
fixTabIdRecord();
}
// Within NameRecords, it's ok to have the formula
// part point at deleted sheets. It's also ok to
// have the ExternSheetNumber point at deleted
// sheets.
// sheets.
// However, the sheet index must be adjusted, or
// excel will break. (Sheet index is either 0 for
// global, or 1 based index to sheet)
int sheetNum1Based = sheetIndex + 1;
for(int i=0; i<getNumNames(); i++) {
NameRecord nr = getNameRecord(i);
if(nr.getSheetNumber() == sheetNum1Based) {
// Excel re-writes these to point to no sheet
nr.setSheetNumber(0);
@@ -790,10 +789,10 @@ public final class Workbook implements Model {

return retval;
}
/**
* Removes the given ExtendedFormatRecord record from the
* file's list. This will make all
* file's list. This will make all
* subsequent font indicies drop by one,
* so you'll need to update those yourself!
*/
@@ -818,14 +817,14 @@ public final class Workbook implements Model {
numxfs++;
return xf;
}
/**
* Returns the StyleRecord for the given
* xfIndex, or null if that ExtendedFormat doesn't
* have a Style set.
*/
public StyleRecord getStyleRecord(int xfIndex) {
// Style records always follow after
// Style records always follow after
// the ExtendedFormat records
for(int i=records.getXfpos(); i<records.size(); i++) {
Record r = records.get(i);
@@ -848,11 +847,11 @@ public final class Workbook implements Model {
* records collection
*/
public StyleRecord createStyleRecord(int xfIndex) {
// Style records always follow after
// Style records always follow after
// the ExtendedFormat records
StyleRecord newSR = new StyleRecord();
newSR.setXFIndex(xfIndex);
// Find the spot
int addAt = -1;
for(int i=records.getXfpos(); i<records.size() &&
@@ -869,7 +868,7 @@ public final class Workbook implements Model {
throw new IllegalStateException("No XF Records found!");
}
records.add(addAt, newSR);
return newSR;
}

@@ -976,7 +975,7 @@ public final class Workbook implements Model {
// Let's skip RECALCID records, as they are only use for optimization
if ( record.getSid() != RecalcIdRecord.sid || ( (RecalcIdRecord) record ).isNeeded() )
{
int len = 0;
int len = 0;
if (record instanceof SSTRecord)
{
sst = (SSTRecord)record;
@@ -1090,7 +1089,7 @@ public final class Workbook implements Model {
}

/**
* creates the TabId record containing an array
* creates the TabId record containing an array
*/
private static TabIdRecord createTabId() {
return new TabIdRecord();
@@ -1121,7 +1120,7 @@ public final class Workbook implements Model {
private static ProtectRecord createProtect() {
// by default even when we support it we won't
// want it to be protected
return new ProtectRecord(false);
return new ProtectRecord(false);
}

/**
@@ -1251,7 +1250,7 @@ public final class Workbook implements Model {
* @param id the number of the format record to create (meaning its position in
* a file as M$ Excel would create it.)
*/
private static FormatRecord createFormat(int id) {
private static FormatRecord createFormat(int id) {
// we'll need multiple editions for
// the different formats

@@ -1674,7 +1673,7 @@ public final class Workbook implements Model {
private static PaletteRecord createPalette() {
return new PaletteRecord();
}
/**
* @return a new UseSelFS object with the use natural language flag set to 0 (false)
*/
@@ -1724,7 +1723,7 @@ public final class Workbook implements Model {
retval.setNumStringsPerBucket(( short ) 0x8);
return retval;
}
/**
* lazy initialization
* Note - creating the link table causes creation of 1 EXTERNALBOOK and 1 EXTERNALSHEET record
@@ -1784,7 +1783,7 @@ public final class Workbook implements Model {
public int getExternalSheetIndex(String workbookName, String sheetName) {
return getOrCreateLinkTable().getExternalSheetIndex(workbookName, sheetName);
}

/** gets the total number of names
* @return number of names
@@ -1817,7 +1816,7 @@ public final class Workbook implements Model {
*/
public NameRecord addName(NameRecord name)
{
LinkTable linkTable = getOrCreateLinkTable();
if(linkTable.nameAlreadyExists(name)) {
throw new IllegalArgumentException(
@@ -1828,7 +1827,7 @@ public final class Workbook implements Model {

return name;
}
/**
* Generates a NameRecord to represent a built-in region
* @return a new NameRecord
@@ -1837,11 +1836,11 @@ public final class Workbook implements Model {
if (sheetNumber < 0 || sheetNumber+1 > Short.MAX_VALUE) {
throw new IllegalArgumentException("Sheet number ["+sheetNumber+"]is not valid ");
}
NameRecord name = new NameRecord(builtInName, sheetNumber);
while(linkTable.nameAlreadyExists(name)) {
throw new RuntimeException("Builtin (" + builtInName
throw new RuntimeException("Builtin (" + builtInName
+ ") already exists for sheet (" + sheetNumber + ")");
}
addName(name);
@@ -1853,7 +1852,7 @@ public final class Workbook implements Model {
* @param nameIndex name index
*/
public void removeName(int nameIndex){
if (linkTable.getNumNames() > nameIndex) {
int idx = findFirstRecordLocBySid(NameRecord.sid);
records.remove(idx + nameIndex);
@@ -1912,7 +1911,7 @@ public final class Workbook implements Model {
return maxformatid;
}


/**
* Returns the first occurance of a record matching a particular sid.
@@ -1920,7 +1919,7 @@ public final class Workbook implements Model {
public Record findFirstRecordBySid(short sid) {
for (Iterator iterator = records.iterator(); iterator.hasNext(); ) {
Record record = ( Record ) iterator.next();
if (record.getSid() == sid) {
return record;
}
@@ -1966,7 +1965,7 @@ public final class Workbook implements Model {
{
return hyperlinks;
}
public List<Record> getRecords() {
return records.getRecords();
}
@@ -1980,7 +1979,7 @@ public final class Workbook implements Model {
public boolean isUsing1904DateWindowing() {
return uses1904datewindowing;
}
/**
* Returns the custom palette in use for this workbook; if a custom palette record
* does not exist, then it is created.
@@ -2004,7 +2003,7 @@ public final class Workbook implements Model {
}
return palette;
}
/**
* Finds the primary drawing group, if one already exists
*/
@@ -2060,7 +2059,7 @@ public final class Workbook implements Model {
}

/**
* Creates a primary drawing group record. If it already
* Creates a primary drawing group record. If it already
* exists then it's modified.
*/
public void createDrawingGroup() {
@@ -2124,7 +2123,7 @@ public final class Workbook implements Model {

}
}
public WindowOneRecord getWindowOne() {
return windowOne;
}
@@ -2172,8 +2171,8 @@ public final class Workbook implements Model {
if (writeProtect == null) {
writeProtect = new WriteProtectRecord();
int i = 0;
for (i = 0;
i < records.size() && !(records.get(i) instanceof BOFRecord);
for (i = 0;
i < records.size() && !(records.get(i) instanceof BOFRecord);
i++) {
}
records.add(i+1, writeProtect);
@@ -2185,8 +2184,8 @@ public final class Workbook implements Model {
if (writeAccess == null) {
writeAccess = createWriteAccess();
int i = 0;
for (i = 0;
i < records.size() && !(records.get(i) instanceof InterfaceEndRecord);
for (i = 0;
i < records.size() && !(records.get(i) instanceof InterfaceEndRecord);
i++) {
}
records.add(i+1, writeAccess);
@@ -2198,15 +2197,15 @@ public final class Workbook implements Model {
if (fileShare == null) {
fileShare = new FileSharingRecord();
int i = 0;
for (i = 0;
i < records.size() && !(records.get(i) instanceof WriteAccessRecord);
for (i = 0;
i < records.size() && !(records.get(i) instanceof WriteAccessRecord);
i++) {
}
records.add(i+1, fileShare);
}
return fileShare;
}
/**
* is the workbook protected with a password (not encrypted)?
*/

+ 33
- 34
src/java/org/apache/poi/hssf/record/CFRuleRecord.java ファイルの表示

@@ -22,7 +22,6 @@ import org.apache.poi.hssf.record.cf.BorderFormatting;
import org.apache.poi.hssf.record.cf.FontFormatting;
import org.apache.poi.hssf.record.cf.PatternFormatting;
import org.apache.poi.hssf.record.formula.Ptg;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.ss.formula.Formula;
import org.apache.poi.ss.formula.FormulaType;
@@ -32,7 +31,7 @@ import org.apache.poi.util.LittleEndianOutput;

/**
* Conditional Formatting Rule Record (0x01B1).<br/>
*
*
* @author Dmitriy Kumshayev
*/
public final class CFRuleRecord extends StandardRecord {
@@ -101,10 +100,10 @@ public final class CFRuleRecord extends StandardRecord {
private BorderFormatting borderFormatting;

private PatternFormatting patternFormatting;
private Formula field_17_formula1;
private Formula field_18_formula2;
/** Creates new CFRuleRecord */
private CFRuleRecord(byte conditionType, byte comparisonOperation)
{
@@ -124,9 +123,9 @@ public final class CFRuleRecord extends StandardRecord {
field_17_formula1=Formula.create(Ptg.EMPTY_PTG_ARRAY);
field_18_formula2=Formula.create(Ptg.EMPTY_PTG_ARRAY);
}
private CFRuleRecord(byte conditionType, byte comparisonOperation, Ptg[] formula1, Ptg[] formula2) {
this(conditionType, comparisonOperation);
this(conditionType, comparisonOperation);
field_17_formula1 = Formula.create(formula1);
field_18_formula2 = Formula.create(formula2);
}
@@ -199,7 +198,7 @@ public final class CFRuleRecord extends StandardRecord {
return null;
}
}
public boolean containsAlignFormattingBlock()
{
return getOptionFlag(align);
@@ -208,7 +207,7 @@ public final class CFRuleRecord extends StandardRecord {
{
setOptionFlag(false,align);
}
public boolean containsBorderFormattingBlock()
{
return getOptionFlag(bord);
@@ -229,7 +228,7 @@ public final class CFRuleRecord extends StandardRecord {
return null;
}
}
public boolean containsPatternFormattingBlock()
{
return getOptionFlag(patt);
@@ -250,7 +249,7 @@ public final class CFRuleRecord extends StandardRecord {
return null;
}
}
public boolean containsProtectionFormattingBlock()
{
return getOptionFlag(prot);
@@ -259,7 +258,7 @@ public final class CFRuleRecord extends StandardRecord {
{
setOptionFlag(false,prot);
}
public void setComparisonOperation(byte operation)
{
field_2_comparison_operator = operation;
@@ -269,7 +268,7 @@ public final class CFRuleRecord extends StandardRecord {
{
return field_2_comparison_operator;
}

/**
* get the option flags
@@ -279,7 +278,7 @@ public final class CFRuleRecord extends StandardRecord {
public int getOptions()
{
return field_5_options;
}
}

private boolean isModified(BitField field)
{
@@ -290,7 +289,7 @@ public final class CFRuleRecord extends StandardRecord {
{
field_5_options = field.setBoolean(field_5_options, !modified);
}
public boolean isLeftBorderModified()
{
return isModified(bordLeft);
@@ -300,7 +299,7 @@ public final class CFRuleRecord extends StandardRecord {
{
setModified(modified,bordLeft);
}
public boolean isRightBorderModified()
{
return isModified(bordRight);
@@ -310,7 +309,7 @@ public final class CFRuleRecord extends StandardRecord {
{
setModified(modified,bordRight);
}
public boolean isTopBorderModified()
{
return isModified(bordTop);
@@ -320,7 +319,7 @@ public final class CFRuleRecord extends StandardRecord {
{
setModified(modified,bordTop);
}
public boolean isBottomBorderModified()
{
return isModified(bordBot);
@@ -330,7 +329,7 @@ public final class CFRuleRecord extends StandardRecord {
{
setModified(modified,bordBot);
}
public boolean isTopLeftBottomRightBorderModified()
{
return isModified(bordTlBr);
@@ -340,7 +339,7 @@ public final class CFRuleRecord extends StandardRecord {
{
setModified(modified,bordTlBr);
}
public boolean isBottomLeftTopRightBorderModified()
{
return isModified(bordBlTr);
@@ -350,7 +349,7 @@ public final class CFRuleRecord extends StandardRecord {
{
setModified(modified,bordBlTr);
}
public boolean isPatternStyleModified()
{
return isModified(pattStyle);
@@ -360,7 +359,7 @@ public final class CFRuleRecord extends StandardRecord {
{
setModified(modified,pattStyle);
}
public boolean isPatternColorModified()
{
return isModified(pattCol);
@@ -370,7 +369,7 @@ public final class CFRuleRecord extends StandardRecord {
{
setModified(modified,pattCol);
}
public boolean isPatternBackgroundColorModified()
{
return isModified(pattBgCol);
@@ -380,7 +379,7 @@ public final class CFRuleRecord extends StandardRecord {
{
setModified(modified,pattBgCol);
}
private boolean getOptionFlag(BitField field)
{
return field.isSet(field_5_options);
@@ -390,12 +389,12 @@ public final class CFRuleRecord extends StandardRecord {
{
field_5_options = field.setBoolean(field_5_options, flag);
}
/**
* get the stack of the 1st expression as a list
*
* @return list of tokens (casts stack to a list and returns it!)
* this method can return null is we are unable to create Ptgs from
* this method can return null is we are unable to create Ptgs from
* existing excel file
* callers should check for null!
*/
@@ -432,7 +431,7 @@ public final class CFRuleRecord extends StandardRecord {
private static int getFormulaSize(Formula formula) {
return formula.getEncodedTokenSize();
}
/**
* called by the class that is responsible for writing this sucker.
* Subclasses should implement this so that their data is passed back in a
@@ -441,30 +440,30 @@ public final class CFRuleRecord extends StandardRecord {
* @param out the stream to write to
*/
public void serialize(LittleEndianOutput out) {
int formula1Len=getFormulaSize(field_17_formula1);
int formula2Len=getFormulaSize(field_18_formula2);
out.writeByte(field_1_condition_type);
out.writeByte(field_2_comparison_operator);
out.writeShort(formula1Len);
out.writeShort(formula2Len);
out.writeInt(field_5_options);
out.writeShort(field_6_not_used);
if (containsFontFormattingBlock()) {
byte[] fontFormattingRawRecord = fontFormatting.getRawRecord();
out.write(fontFormattingRawRecord);
}
if (containsBorderFormattingBlock()) {
borderFormatting.serialize(out);
}
if (containsPatternFormattingBlock()) {
patternFormatting.serialize(out);
}
field_17_formula1.serializeTokens(out);
field_18_formula2.serializeTokens(out);
}
@@ -499,7 +498,7 @@ public final class CFRuleRecord extends StandardRecord {
}
return buffer.toString();
}
public Object clone() {
CFRuleRecord rec = new CFRuleRecord(field_1_condition_type, field_2_comparison_operator);
rec.field_5_options = field_5_options;
@@ -524,7 +523,7 @@ public final class CFRuleRecord extends StandardRecord {
* this call will produce the wrong results if the formula contains any cell references
* One approach might be to apply the inverse of SharedFormulaRecord.convertSharedFormulas(Stack, int, int)
* Note - two extra parameters (rowIx & colIx) will be required. They probably come from one of the Region objects.
*
*
* @return <code>null</code> if <tt>formula</tt> was null.
*/
private static Ptg[] parseFormula(String formula, HSSFSheet sheet) {

+ 0
- 1
src/java/org/apache/poi/hssf/record/ContinueRecord.java ファイルの表示

@@ -18,7 +18,6 @@
package org.apache.poi.hssf.record;

import org.apache.poi.util.HexDump;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianOutput;

/**

+ 0
- 1
src/java/org/apache/poi/hssf/record/RecordFactory.java ファイルの表示

@@ -17,7 +17,6 @@

package org.apache.poi.hssf.record;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

+ 2
- 3
src/java/org/apache/poi/hssf/record/SelectionRecord.java ファイルの表示

@@ -19,7 +19,6 @@ package org.apache.poi.hssf.record;

import org.apache.poi.hssf.util.CellRangeAddress8Bit;
import org.apache.poi.util.HexDump;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianOutput;

/**
@@ -59,7 +58,7 @@ public final class SelectionRecord extends StandardRecord {
field_3_col_active_cell = in.readShort();
field_4_active_cell_ref_index = in.readShort();
int field_5_num_refs = in.readUShort();
field_6_refs = new CellRangeAddress8Bit[field_5_num_refs];
for (int i = 0; i < field_6_refs.length; i++) {
field_6_refs[i] = new CellRangeAddress8Bit(in);
@@ -141,7 +140,7 @@ public final class SelectionRecord extends StandardRecord {
return sb.toString();
}
protected int getDataSize() {
return 9 // 1 byte + 4 shorts
return 9 // 1 byte + 4 shorts
+ CellRangeAddress8Bit.getEncodedSize(field_6_refs.length);
}
public void serialize(LittleEndianOutput out) {

+ 9
- 10
src/java/org/apache/poi/hssf/record/SubRecord.java ファイルの表示

@@ -17,7 +17,6 @@

package org.apache.poi.hssf.record;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

import org.apache.poi.hssf.record.formula.Area3DPtg;
@@ -26,7 +25,6 @@ import org.apache.poi.hssf.record.formula.Ptg;
import org.apache.poi.hssf.record.formula.Ref3DPtg;
import org.apache.poi.hssf.record.formula.RefPtg;
import org.apache.poi.util.HexDump;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianByteArrayInputStream;
import org.apache.poi.util.LittleEndianInput;
import org.apache.poi.util.LittleEndianOutput;
@@ -37,6 +35,7 @@ import org.apache.poi.util.LittleEndianOutputStream;
*/
public abstract class SubRecord {
protected SubRecord() {
// no fields to initialise
}

public static SubRecord createSubRecord(LittleEndianInput in) {
@@ -78,8 +77,8 @@ public abstract class SubRecord {

public abstract void serialize(LittleEndianOutput out);
public abstract Object clone();
private static final class UnknownSubRecord extends SubRecord {

private final int _sid;
@@ -118,7 +117,7 @@ public abstract class SubRecord {
private static final class LbsDataSubRecord extends SubRecord {

public static final int sid = 0x0013;
private int _unknownShort1;
private int _unknownInt4;
private Ptg _linkPtg;
@@ -137,8 +136,8 @@ public abstract class SubRecord {
if (linkSize > 0) {
int formulaSize = in.readUShort();
_unknownInt4 = in.readInt();
byte[] buf = new byte[formulaSize];
in.readFully(buf);
_linkPtg = readRefPtg(buf);
@@ -152,7 +151,7 @@ public abstract class SubRecord {
default:
throw new RecordFormatException("Unexpected leftover bytes");
}
} else {
_unknownInt4 = 0;
_linkPtg = null;
@@ -165,11 +164,11 @@ public abstract class SubRecord {
_comboStyle = in.readUShort();
_lineCount = in.readUShort();
_unknownShort13 = in.readUShort();
}
protected int getDataSize() {
int result = 2; // 2 initial shorts
// optional link formula
if (_linkPtg != null) {
result += 2; // encoded Ptg size

+ 17
- 18
src/java/org/apache/poi/hssf/record/formula/ArrayPtg.java ファイルの表示

@@ -17,7 +17,6 @@

package org.apache.poi.hssf.record.formula;

import org.apache.poi.hssf.record.UnicodeString;
import org.apache.poi.hssf.record.constant.ConstantValueParser;
import org.apache.poi.hssf.record.constant.ErrorConstant;
import org.apache.poi.util.LittleEndianInput;
@@ -25,20 +24,20 @@ import org.apache.poi.util.LittleEndianOutput;

/**
* ArrayPtg - handles arrays
*
*
* The ArrayPtg is a little weird, the size of the Ptg when parsing initially only
* includes the Ptg sid and the reserved bytes. The next Ptg in the expression then follows.
* It is only after the "size" of all the Ptgs is met, that the ArrayPtg data is actually
* held after this. So Ptg.createParsedExpression keeps track of the number of
* held after this. So Ptg.createParsedExpression keeps track of the number of
* ArrayPtg elements and need to parse the data upto the FORMULA record size.
*
*
* @author Jason Height (jheight at chariot dot net dot au)
*/
public final class ArrayPtg extends Ptg {
public static final byte sid = 0x20;

private static final int RESERVED_FIELD_LEN = 7;
/**
/**
* The size of the plain tArray token written within the standard formula tokens
* (not including the data which comes after all formula tokens)
*/
@@ -48,7 +47,7 @@ public final class ArrayPtg extends Ptg {

// TODO - fix up field visibility and subclasses
private final byte[] field_1_reserved;
// data from these fields comes after the Ptg data of all tokens in current formula
private int token_1_columns;
private short token_2_rows;
@@ -78,7 +77,7 @@ public final class ArrayPtg extends Ptg {
vv[getValueIndex(c, r)] = rowData[c];
}
}
token_3_arrayValues = vv;
field_1_reserved = DEFAULT_RESERVED_DATA;
}
@@ -98,13 +97,13 @@ public final class ArrayPtg extends Ptg {
}
return result;
}
public boolean isBaseToken() {
return false;
}
/**
* Read in the actual token (array) values. This occurs
/**
* Read in the actual token (array) values. This occurs
* AFTER the last Ptg in the expression.
* See page 304-305 of Excel97-2007BinaryFileFormat(xls)Specification.pdf
*/
@@ -116,10 +115,10 @@ public final class ArrayPtg extends Ptg {
//Which is not explicitly documented.
nColumns++;
nRows++;
token_1_columns = nColumns;
token_2_rows = nRows;
int totalCount = nRows * nColumns;
token_3_arrayValues = ConstantValueParser.parse(in, totalCount);
}
@@ -143,11 +142,11 @@ public final class ArrayPtg extends Ptg {
*/
/* package */ int getValueIndex(int colIx, int rowIx) {
if(colIx < 0 || colIx >= token_1_columns) {
throw new IllegalArgumentException("Specified colIx (" + colIx
throw new IllegalArgumentException("Specified colIx (" + colIx
+ ") is outside the allowed range (0.." + (token_1_columns-1) + ")");
}
if(rowIx < 0 || rowIx >= token_2_rows) {
throw new IllegalArgumentException("Specified rowIx (" + rowIx
throw new IllegalArgumentException("Specified rowIx (" + rowIx
+ ") is outside the allowed range (0.." + (token_2_rows-1) + ")");
}
return rowIx * token_1_columns + colIx;
@@ -176,7 +175,7 @@ public final class ArrayPtg extends Ptg {

/** This size includes the size of the array Ptg plus the Array Ptg Token value size*/
public int getSize() {
return PLAIN_TOKEN_SIZE
return PLAIN_TOKEN_SIZE
// data written after the all tokens:
+ 1 + 2 // column, row
+ ConstantValueParser.getEncodedSize(token_3_arrayValues);
@@ -200,7 +199,7 @@ public final class ArrayPtg extends Ptg {
b.append("}");
return b.toString();
}
private static String getConstantText(Object o) {

if (o == null) {
@@ -220,7 +219,7 @@ public final class ArrayPtg extends Ptg {
}
throw new IllegalArgumentException("Unexpected constant class (" + o.getClass().getName() + ")");
}
public byte getDefaultOperandClass() {
return Ptg.CLASS_ARRAY;
}

+ 1
- 2
src/java/org/apache/poi/hssf/record/formula/RefPtgBase.java ファイルの表示

@@ -22,11 +22,10 @@ import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;
import org.apache.poi.util.LittleEndianInput;
import org.apache.poi.util.LittleEndianOutput;
import org.apache.poi.ss.SpreadsheetVersion;

/**
* ReferencePtgBase - handles references (such as A1, A2, IA4)
*
*
* @author Andrew C. Oliver (acoliver@apache.org)
* @author Jason Height (jheight at chariot dot net dot au)
*/

+ 0
- 1
src/java/org/apache/poi/hssf/record/formula/atp/ParityFunction.java ファイルの表示

@@ -19,7 +19,6 @@ package org.apache.poi.hssf.record.formula.atp;

import org.apache.poi.hssf.record.formula.eval.BoolEval;
import org.apache.poi.hssf.record.formula.eval.ErrorEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.hssf.record.formula.eval.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
import org.apache.poi.hssf.record.formula.eval.ValueEval;

+ 1
- 2
src/java/org/apache/poi/hssf/record/formula/atp/YearFrac.java ファイルの表示

@@ -22,15 +22,14 @@ import java.util.GregorianCalendar;
import java.util.regex.Pattern;

import org.apache.poi.hssf.record.formula.eval.ErrorEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.hssf.record.formula.eval.EvaluationException;
import org.apache.poi.hssf.record.formula.eval.NumberEval;
import org.apache.poi.hssf.record.formula.eval.OperandResolver;
import org.apache.poi.hssf.record.formula.eval.StringEval;
import org.apache.poi.hssf.record.formula.eval.ValueEval;
import org.apache.poi.hssf.record.formula.functions.FreeRefFunction;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.formula.EvaluationWorkbook;
import org.apache.poi.ss.usermodel.DateUtil;
/**
* Implementation of Excel 'Analysis ToolPak' function YEARFRAC()<br/>
*

+ 1
- 7
src/java/org/apache/poi/hssf/usermodel/HSSFChildAnchor.java ファイルの表示

@@ -17,13 +17,8 @@

package org.apache.poi.hssf.usermodel;

import org.apache.poi.ddf.EscherRecord;
import org.apache.poi.ddf.EscherClientAnchorRecord;
import org.apache.poi.ddf.EscherChildAnchorRecord;

public class HSSFChildAnchor
extends HSSFAnchor
{
public final class HSSFChildAnchor extends HSSFAnchor {
public HSSFChildAnchor()
{
}
@@ -50,5 +45,4 @@ public class HSSFChildAnchor
{
return dy1 > dy2;
}

}

+ 24
- 28
src/java/org/apache/poi/hssf/usermodel/HSSFCreationHelper.java ファイルの表示

@@ -14,54 +14,50 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.hssf.usermodel;

import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Sheet;

public class HSSFCreationHelper implements CreationHelper {
private HSSFWorkbook workbook;
private HSSFDataFormat dataFormat;
private HSSFDataFormat dataFormat;
HSSFCreationHelper(HSSFWorkbook wb) {
workbook = wb;
// Create the things we only ever need one of
dataFormat = new HSSFDataFormat(workbook.getWorkbook());
}
/**
* Creates a new HSSFRichTextString for you.
*/

public HSSFRichTextString createRichTextString(String text) {
return new HSSFRichTextString(text);
}
public HSSFDataFormat createDataFormat() {
return dataFormat;
}
public HSSFHyperlink createHyperlink(int type) {
return new HSSFHyperlink(type);
}

/**
* Creates a HSSFFormulaEvaluator, the object that evaluates formula cells.
*
* @return a HSSFFormulaEvaluator instance
*/
public HSSFFormulaEvaluator createFormulaEvaluator(){
return new HSSFFormulaEvaluator(workbook);
}

/**
* Creates a HSSFClientAnchor. Use this object to position drawing object in a sheet
*
* @return a HSSFClientAnchor instance
* @see org.apache.poi.ss.usermodel.Drawing
*/
public HSSFClientAnchor createClientAnchor(){
return new HSSFClientAnchor();
}
/**
* Creates a HSSFFormulaEvaluator, the object that evaluates formula cells.
*
* @return a HSSFFormulaEvaluator instance
*/
public HSSFFormulaEvaluator createFormulaEvaluator(){
return new HSSFFormulaEvaluator(workbook);
}

/**
* Creates a HSSFClientAnchor. Use this object to position drawing object in a sheet
*
* @return a HSSFClientAnchor instance
* @see org.apache.poi.ss.usermodel.Drawing
*/
public HSSFClientAnchor createClientAnchor(){
return new HSSFClientAnchor();
}
}

+ 2
- 13
src/java/org/apache/poi/hssf/usermodel/HSSFDataFormatter.java ファイルの表示

@@ -17,21 +17,11 @@

package org.apache.poi.hssf.usermodel;

import org.apache.poi.ss.usermodel.DataFormatter;

import java.text.DecimalFormat;
import java.text.FieldPosition;
import java.text.Format;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.poi.ss.usermodel.DataFormatter;

/**
* HSSFDataFormatter contains methods for formatting the value stored in an
@@ -73,7 +63,6 @@ import java.util.regex.Pattern;
* cell's data format string.
*
* @author James May (james dot may at fmr dot com)
*
*/
public final class HSSFDataFormatter extends DataFormatter {


+ 0
- 3
src/java/org/apache/poi/hssf/usermodel/HSSFTextbox.java ファイルの表示

@@ -19,9 +19,6 @@ package org.apache.poi.hssf.usermodel;

import org.apache.poi.ss.usermodel.RichTextString;

import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;

/**
* A textbox is a shape that may hold a rich text string.
*

+ 55
- 64
src/java/org/apache/poi/poifs/dev/POIFSLister.java ファイルの表示

@@ -21,78 +21,69 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;

import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.DocumentNode;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

/**
* A lister of the entries in POIFS files.
*
*
* Much simpler than {@link POIFSViewer}
*/
public class POIFSLister {
/**
* Display the entries of multiple POIFS files
*
* @param args the names of the files to be displayed
*/
public static void main(final String args[]) throws IOException {
if (args.length == 0)
{
System.err.println("Must specify at least one file to view");
System.exit(1);
}
/**
* Display the entries of multiple POIFS files
*
* @param args the names of the files to be displayed
*/
public static void main(final String args[]) throws IOException {
if (args.length == 0) {
System.err.println("Must specify at least one file to view");
System.exit(1);
}

boolean withSizes = false;
for (int j = 0; j < args.length; j++) {
if(args[j].equalsIgnoreCase("-size") ||
args[j].equalsIgnoreCase("-sizes")) {
withSizes = true;
} else {
viewFile(args[j], withSizes);
}
}
}
boolean withSizes = false;
for (int j = 0; j < args.length; j++) {
if (args[j].equalsIgnoreCase("-size") || args[j].equalsIgnoreCase("-sizes")) {
withSizes = true;
} else {
viewFile(args[j], withSizes);
}
}
}

public static void viewFile(final String filename, boolean withSizes) throws IOException
{
POIFSFileSystem fs = new POIFSFileSystem(
new FileInputStream(filename)
);
displayDirectory(fs.getRoot(), "", withSizes);
}
public static void displayDirectory(DirectoryNode dir, String indent, boolean withSizes) {
System.out.println(indent + dir.getName() + " -");
String newIndent = indent + " ";
boolean hadChildren = false;
for(Iterator it = dir.getEntries(); it.hasNext(); ) {
hadChildren = true;
Object entry = it.next();
if(entry instanceof DirectoryNode) {
displayDirectory((DirectoryNode)entry, newIndent, withSizes);
} else {
DocumentNode doc = (DocumentNode)entry;
String name = doc.getName();
String size = "";
if(name.charAt(0) < 10) {
String altname = "(0x0" + (int)name.charAt(0) + ")" + name.substring(1);
name = name.substring(1) + " <" + altname + ">";
}
if(withSizes) {
size = " [" +
doc.getSize() + " / 0x" +
Integer.toHexString(doc.getSize()) +
"]";
}
System.out.println(newIndent + name + size);
}
}
if(!hadChildren) {
System.out.println(newIndent + "(no children)");
}
}
}
public static void viewFile(final String filename, boolean withSizes) throws IOException {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filename));
displayDirectory(fs.getRoot(), "", withSizes);
}

public static void displayDirectory(DirectoryNode dir, String indent, boolean withSizes) {
System.out.println(indent + dir.getName() + " -");
String newIndent = indent + " ";

boolean hadChildren = false;
for (Iterator it = dir.getEntries(); it.hasNext();) {
hadChildren = true;
Object entry = it.next();
if (entry instanceof DirectoryNode) {
displayDirectory((DirectoryNode) entry, newIndent, withSizes);
} else {
DocumentNode doc = (DocumentNode) entry;
String name = doc.getName();
String size = "";
if (name.charAt(0) < 10) {
String altname = "(0x0" + (int) name.charAt(0) + ")" + name.substring(1);
name = name.substring(1) + " <" + altname + ">";
}
if (withSizes) {
size = " [" + doc.getSize() + " / 0x" + Integer.toHexString(doc.getSize())
+ "]";
}
System.out.println(newIndent + name + size);
}
}
if (!hadChildren) {
System.out.println(newIndent + "(no children)");
}
}
}

+ 20
- 50
src/java/org/apache/poi/poifs/property/DirectoryProperty.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,44 +14,35 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.poifs.property;

import java.util.*;

import java.io.IOException;

import org.apache.poi.poifs.storage.SmallDocumentBlock;
import java.util.*;

/**
* Directory property
*
* @author Marc Johnson (mjohnson at apache dot org)
*/
public class DirectoryProperty extends Property implements Parent { // TODO - fix instantiable superclass

public class DirectoryProperty
extends Property
implements Parent
{

// List of Property instances
private List _children;
/** List of Property instances */
private List<Property> _children;

// set of children's names
private Set _children_names;
/** set of children's names */
private Set<String> _children_names;

/**
* Default constructor
*
* @param name the name of the directory
*/

public DirectoryProperty(String name)
{
super();
_children = new ArrayList();
_children_names = new HashSet();
_children = new ArrayList<Property>();
_children_names = new HashSet<String>();
setName(name);
setSize(0);
setPropertyType(PropertyConstants.DIRECTORY_TYPE);
@@ -67,13 +57,12 @@ public class DirectoryProperty
* @param array byte data
* @param offset offset into byte data
*/

protected DirectoryProperty(final int index, final byte [] array,
final int offset)
{
super(index, array, offset);
_children = new ArrayList();
_children_names = new HashSet();
_children = new ArrayList<Property>();
_children_names = new HashSet<String>();
}

/**
@@ -84,8 +73,7 @@ public class DirectoryProperty
*
* @return true if the name change could be made, else false
*/

public boolean changeName(final Property property, final String newName)
public boolean changeName(Property property, String newName)
{
boolean result;
String oldName = property.getName();
@@ -116,8 +104,7 @@ public class DirectoryProperty
*
* @return true if the Property could be deleted, else false
*/

public boolean deleteChild(final Property property)
public boolean deleteChild(Property property)
{
boolean result = _children.remove(property);

@@ -128,9 +115,7 @@ public class DirectoryProperty
return result;
}

public static class PropertyComparator
implements Comparator
{
public static class PropertyComparator implements Comparator<Property> {

/**
* Object equality, implemented as object identity
@@ -139,7 +124,6 @@ public class DirectoryProperty
*
* @return true if identical, else false
*/

public boolean equals(Object o)
{
return this == o;
@@ -160,12 +144,11 @@ public class DirectoryProperty
* zero if o1 == o2,
* positive value if o1 > o2.
*/

public int compare(Object o1, Object o2)
public int compare(Property o1, Property o2)
{
String VBA_PROJECT = "_VBA_PROJECT";
String name1 = (( Property ) o1).getName();
String name2 = (( Property ) o2).getName();
String name1 = o1.getName();
String name2 = o2.getName();
int result = name1.length() - name2.length();

if (result == 0)
@@ -200,14 +183,11 @@ public class DirectoryProperty
}
return result;
}
} // end private class PropertyComparator

/* ********** START extension of Property ********** */
}

/**
* @return true if a directory type Property
*/

public boolean isDirectory()
{
return true;
@@ -217,13 +197,11 @@ public class DirectoryProperty
* Perform whatever activities need to be performed prior to
* writing
*/

protected void preWrite()
{
if (_children.size() > 0)
{
Property[] children =
( Property [] ) _children.toArray(new Property[ 0 ]);
Property[] children = _children.toArray(new Property[ 0 ]);

Arrays.sort(children, new PropertyComparator());
int midpoint = children.length / 2;
@@ -259,17 +237,13 @@ public class DirectoryProperty
}
}

/* ********** END extension of Property ********** */
/* ********** START implementation of Parent ********** */

/**
* Get an iterator over the children of this Parent; all elements
* are instances of Property.
*
* @return Iterator of children; may refer to an empty collection
*/

public Iterator getChildren()
public Iterator<Property> getChildren()
{
return _children.iterator();
}
@@ -282,7 +256,6 @@ public class DirectoryProperty
* @exception IOException if we already have a child with the same
* name
*/

public void addChild(final Property property)
throws IOException
{
@@ -295,7 +268,4 @@ public class DirectoryProperty
_children_names.add(name);
_children.add(property);
}

/* ********** END implementation of Parent ********** */
} // end public class DirectoryProperty

}

+ 11
- 38
src/java/org/apache/poi/poifs/property/PropertyTable.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,20 +14,19 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.poifs.property;

import java.io.IOException;
import java.io.OutputStream;

import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

import org.apache.poi.poifs.common.POIFSConstants;
import org.apache.poi.poifs.filesystem.BATManaged;
import org.apache.poi.poifs.storage.BlockWritable;
import org.apache.poi.poifs.storage.PropertyBlock;
import org.apache.poi.poifs.storage.RawDataBlock;
import org.apache.poi.poifs.storage.RawDataBlockList;

/**
@@ -38,22 +36,15 @@ import org.apache.poi.poifs.storage.RawDataBlockList;
*
* @author Marc Johnson (mjohnson at apache dot org)
*/

public class PropertyTable
implements BATManaged, BlockWritable
{
public final class PropertyTable implements BATManaged, BlockWritable {
private int _start_block;
private List _properties;
private List<Property> _properties;
private BlockWritable[] _blocks;

/**
* Default constructor
*/

public PropertyTable()
{
_start_block = POIFSConstants.END_OF_CHAIN;
_properties = new ArrayList();
_properties = new ArrayList<Property>();
addProperty(new RootProperty());
_blocks = null;
}
@@ -69,7 +60,6 @@ public class PropertyTable
* @exception IOException if anything goes wrong (which should be
* a result of the input being NFG)
*/

public PropertyTable(final int startBlock,
final RawDataBlockList blockList)
throws IOException
@@ -87,8 +77,7 @@ public class PropertyTable
*
* @param property the new Property to manage
*/

public void addProperty(final Property property)
public void addProperty(Property property)
{
_properties.add(property);
}
@@ -98,7 +87,6 @@ public class PropertyTable
*
* @param property the Property to be removed
*/

public void removeProperty(final Property property)
{
_properties.remove(property);
@@ -109,7 +97,6 @@ public class PropertyTable
*
* @return the root property
*/

public RootProperty getRoot()
{

@@ -120,11 +107,9 @@ public class PropertyTable
/**
* Prepare to be written
*/

public void preWrite()
{
Property[] properties =
( Property [] ) _properties.toArray(new Property[ 0 ]);
Property[] properties = _properties.toArray(new Property[ 0 ]);

// give each property its index
for (int k = 0; k < properties.length; k++)
@@ -147,7 +132,6 @@ public class PropertyTable
*
* @return start block index
*/

public int getStartBlock()
{
return _start_block;
@@ -164,12 +148,12 @@ public class PropertyTable
// property has no children
return;
}
Stack children = new Stack();
Stack<Property> children = new Stack<Property>();

children.push(_properties.get(index));
while (!children.empty())
{
Property property = ( Property ) children.pop();
Property property = children.pop();

root.addChild(property);
if (property.isDirectory())
@@ -189,14 +173,11 @@ public class PropertyTable
}
}

/* ********** START implementation of BATManaged ********** */

/**
* Return the number of BigBlock's this instance uses
*
* @return count of BigBlock instances
*/

public int countBlocks()
{
return (_blocks == null) ? 0
@@ -209,15 +190,11 @@ public class PropertyTable
* @param index index into the array of BigBlock instances making
* up the the filesystem
*/

public void setStartBlock(final int index)
{
_start_block = index;
}

/* ********** END implementation of BATManaged ********** */
/* ********** START implementation of BlockWritable ********** */

/**
* Write the storage to an OutputStream
*
@@ -227,7 +204,6 @@ public class PropertyTable
* @exception IOException on problems writing to the specified
* stream
*/

public void writeBlocks(final OutputStream stream)
throws IOException
{
@@ -239,7 +215,4 @@ public class PropertyTable
}
}
}

/* ********** END implementation of BlockWritable ********** */
} // end public class PropertyTable

}

+ 2
- 18
src/java/org/apache/poi/poifs/property/RootProperty.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,14 +14,9 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.poifs.property;

import java.util.*;

import java.io.IOException;

import org.apache.poi.poifs.common.POIFSConstants;
import org.apache.poi.poifs.storage.SmallDocumentBlock;

@@ -31,14 +25,7 @@ import org.apache.poi.poifs.storage.SmallDocumentBlock;
*
* @author Marc Johnson (mjohnson at apache dot org)
*/

public class RootProperty
extends DirectoryProperty
{

/**
* Default constructor
*/
public final class RootProperty extends DirectoryProperty {

RootProperty()
{
@@ -57,7 +44,6 @@ public class RootProperty
* @param array byte data
* @param offset offset into byte data
*/

protected RootProperty(final int index, final byte [] array,
final int offset)
{
@@ -69,10 +55,8 @@ public class RootProperty
*
* @param size size in terms of small blocks
*/

public void setSize(int size)
{
super.setSize(SmallDocumentBlock.calcSize(size));
}
} // end public class RootProperty

}

+ 1
- 7
src/java/org/apache/poi/poifs/storage/BATBlock.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,7 +14,6 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.poifs.storage;

@@ -26,7 +24,6 @@ import java.util.Arrays;

import org.apache.poi.poifs.common.POIFSConstants;
import org.apache.poi.util.IntegerField;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianConsts;

/**
@@ -35,10 +32,7 @@ import org.apache.poi.util.LittleEndianConsts;
*
* @author Marc Johnson (mjohnson at apache dot org)
*/

public class BATBlock
extends BigBlock
{
public final class BATBlock extends BigBlock {
private static final int _entries_per_block =
POIFSConstants.BIG_BLOCK_SIZE / LittleEndianConsts.INT_SIZE;
private static final int _entries_per_xbat_block = _entries_per_block

+ 9
- 31
src/java/org/apache/poi/poifs/storage/BlockAllocationTableReader.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,7 +14,6 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.poifs.storage;

@@ -43,9 +41,7 @@ import org.apache.poi.util.LittleEndianConsts;
*
* @author Marc Johnson (mjohnson at apache dot org)
*/

public class BlockAllocationTableReader
{
public final class BlockAllocationTableReader {
private IntList _entries;

/**
@@ -154,12 +150,6 @@ public class BlockAllocationTableReader
setEntries(blocks, raw_block_list);
}

/**
* Constructor BlockAllocationTableReader
*
*
*/

BlockAllocationTableReader()
{
_entries = new IntList();
@@ -177,17 +167,16 @@ public class BlockAllocationTableReader
*
* @exception IOException if there is a problem acquiring the blocks
*/

ListManagedBlock [] fetchBlocks(final int startBlock,
final int headerPropertiesStartBlock,
final BlockList blockList)
throws IOException
{
List blocks = new ArrayList();
List<ListManagedBlock> blocks = new ArrayList<ListManagedBlock>();
int currentBlock = startBlock;
boolean firstPass = true;
ListManagedBlock dataBlock = null;
// Process the chain from the start to the end
// Normally we have header, data, end
// Sometimes we have data, header, end
@@ -216,9 +205,8 @@ public class BlockAllocationTableReader
}
}
}
return ( ListManagedBlock [] ) blocks
.toArray(new ListManagedBlock[ blocks.size() ]);

return blocks.toArray(new ListManagedBlock[blocks.size()]);
}

// methods for debugging reader
@@ -230,7 +218,6 @@ public class BlockAllocationTableReader
*
* @return true if the specific block is used, else false
*/

boolean isUsed(final int index)
{
boolean rval = false;
@@ -238,9 +225,8 @@ public class BlockAllocationTableReader
try
{
rval = _entries.get(index) != -1;
}
catch (IndexOutOfBoundsException ignored)
{
} catch (IndexOutOfBoundsException e) {
// ignored
}
return rval;
}
@@ -256,7 +242,6 @@ public class BlockAllocationTableReader
*
* @exception IOException if the current block is unused
*/

int getNextBlockIndex(final int index)
throws IOException
{
@@ -264,10 +249,7 @@ public class BlockAllocationTableReader
{
return _entries.get(index);
}
else
{
throw new IOException("index " + index + " is unused");
}
throw new IOException("index " + index + " is unused");
}

/**
@@ -276,10 +258,7 @@ public class BlockAllocationTableReader
* @param blocks the array of blocks containing the indices
* @param raw_blocks the list of blocks being managed. Unused
* blocks will be eliminated from the list
*
* @exception IOException
*/

private void setEntries(final ListManagedBlock [] blocks,
final BlockList raw_blocks)
throws IOException
@@ -308,5 +287,4 @@ public class BlockAllocationTableReader
}
raw_blocks.setBAT(this);
}
} // end class BlockAllocationTableReader

}

+ 4
- 34
src/java/org/apache/poi/poifs/storage/BlockAllocationTableWriter.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,20 +14,15 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.poifs.storage;

import java.io.IOException;
import java.io.OutputStream;

import java.util.*;

import org.apache.poi.poifs.common.POIFSConstants;
import org.apache.poi.poifs.filesystem.BATManaged;
import org.apache.poi.util.IntList;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianConsts;

/**
* This class manages and creates the Block Allocation Table, which is
@@ -45,10 +39,7 @@ import org.apache.poi.util.LittleEndianConsts;
*
* @author Marc Johnson (mjohnson at apache dot org)
*/

public class BlockAllocationTableWriter
implements BlockWritable, BATManaged
{
public final class BlockAllocationTableWriter implements BlockWritable, BATManaged {
private IntList _entries;
private BATBlock[] _blocks;
private int _start_block;
@@ -56,7 +47,6 @@ public class BlockAllocationTableWriter
/**
* create a BlockAllocationTableWriter
*/

public BlockAllocationTableWriter()
{
_start_block = POIFSConstants.END_OF_CHAIN;
@@ -69,7 +59,6 @@ public class BlockAllocationTableWriter
*
* @return start block index of BAT blocks
*/

public int createBlocks()
{
int xbat_blocks = 0;
@@ -92,11 +81,8 @@ public class BlockAllocationTableWriter
// stable ... we're OK
break;
}
else
{
bat_blocks = calculated_bat_blocks;
xbat_blocks = calculated_xbat_blocks;
}
bat_blocks = calculated_bat_blocks;
xbat_blocks = calculated_xbat_blocks;
}
int startBlock = allocateSpace(bat_blocks);

@@ -112,7 +98,6 @@ public class BlockAllocationTableWriter
*
* @return the starting index of the blocks
*/

public int allocateSpace(final int blockCount)
{
int startBlock = _entries.size();
@@ -136,7 +121,6 @@ public class BlockAllocationTableWriter
*
* @return the starting block index
*/

public int getStartBlock()
{
return _start_block;
@@ -145,14 +129,11 @@ public class BlockAllocationTableWriter
/**
* create the BATBlocks
*/

void simpleCreateBlocks()
{
_blocks = BATBlock.createBATBlocks(_entries.toArray());
}

/* ********** START implementation of BlockWritable ********** */

/**
* Write the storage to an OutputStream
*
@@ -162,7 +143,6 @@ public class BlockAllocationTableWriter
* @exception IOException on problems writing to the specified
* stream
*/

public void writeBlocks(final OutputStream stream)
throws IOException
{
@@ -172,15 +152,11 @@ public class BlockAllocationTableWriter
}
}

/* ********** END implementation of BlockWritable ********** */
/* ********** START implementation of BATManaged ********** */

/**
* Return the number of BigBlock's this instance uses
*
* @return count of BigBlock instances
*/

public int countBlocks()
{
return _blocks.length;
@@ -188,15 +164,9 @@ public class BlockAllocationTableWriter

/**
* Set the start block for this instance
*
* @param start_block
*/

public void setStartBlock(int start_block)
{
_start_block = start_block;
}

/* ********** END implementation of BATManaged ********** */
} // end class BlockAllocationTableWriter

}

+ 7
- 30
src/java/org/apache/poi/poifs/storage/BlockListImpl.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,30 +14,20 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.poifs.storage;

import java.io.*;

import java.util.*;
import java.io.IOException;

/**
* A simple implementation of BlockList
*
* @author Marc Johnson (mjohnson at apache dot org
*/

class BlockListImpl
implements BlockList
{
abstract class BlockListImpl implements BlockList {
private ListManagedBlock[] _blocks;
private BlockAllocationTableReader _bat;

/**
* Constructor BlockListImpl
*/

protected BlockListImpl()
{
_blocks = new ListManagedBlock[ 0 ];
@@ -50,21 +39,17 @@ class BlockListImpl
*
* @param blocks blocks to be managed
*/

protected void setBlocks(final ListManagedBlock [] blocks)
{
_blocks = blocks;
}

/* ********** START implementation of BlockList ********** */

/**
* remove the specified block from the list
*
* @param index the index of the specified block; if the index is
* out of range, that's ok
*/

public void zap(final int index)
{
if ((index >= 0) && (index < _blocks.length))
@@ -72,13 +57,13 @@ class BlockListImpl
_blocks[ index ] = null;
}
}
/**
* Unit testing method. Gets, without sanity checks or
* removing.
*/
protected ListManagedBlock get(final int index) throws IOException {
return _blocks[index];
protected ListManagedBlock get(final int index) {
return _blocks[index];
}

/**
@@ -91,7 +76,6 @@ class BlockListImpl
* @exception IOException if the index is out of range or has
* already been removed
*/

public ListManagedBlock remove(final int index)
throws IOException
{
@@ -112,7 +96,7 @@ class BlockListImpl
catch (ArrayIndexOutOfBoundsException ignored)
{
throw new IOException("Cannot remove block[ " + index
+ " ]; out of range[ 0 - " +
+ " ]; out of range[ 0 - " +
(_blocks.length-1) + " ]");
}
return result;
@@ -128,7 +112,6 @@ class BlockListImpl
*
* @exception IOException if blocks are missing
*/

public ListManagedBlock [] fetchBlocks(final int startBlock, final int headerPropertiesStartBlock)
throws IOException
{
@@ -144,10 +127,7 @@ class BlockListImpl
* set the associated BlockAllocationTable
*
* @param bat the associated BlockAllocationTable
*
* @exception IOException
*/

public void setBAT(final BlockAllocationTableReader bat)
throws IOException
{
@@ -158,7 +138,4 @@ class BlockListImpl
}
_bat = bat;
}

/* ********** END implementation of BlockList ********** */
} // end package-scope class BlockListImpl

}

+ 0
- 7
src/java/org/apache/poi/poifs/storage/HeaderBlockConstants.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,23 +14,17 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.poifs.storage;

import org.apache.poi.poifs.common.POIFSConstants;
import org.apache.poi.util.IntegerField;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianConsts;
import org.apache.poi.util.LongField;
import org.apache.poi.util.ShortField;

/**
* Constants used in reading/writing the Header block
*
* @author Marc Johnson (mjohnson at apache dot org)
*/

public interface HeaderBlockConstants
{
public static final long _signature = 0xE11AB1A1E011CFD0L;

+ 4
- 12
src/java/org/apache/poi/poifs/storage/PropertyBlock.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,29 +14,22 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.poifs.storage;

import java.io.*;
import java.util.*;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

import org.apache.poi.poifs.common.POIFSConstants;
import org.apache.poi.poifs.property.Property;
import org.apache.poi.util.IntegerField;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianConsts;

/**
* A block of Property instances
*
* @author Marc Johnson (mjohnson at apache dot org)
*/

public class PropertyBlock
extends BigBlock
{
public final class PropertyBlock extends BigBlock {
private static final int _properties_per_block =
POIFSConstants.BIG_BLOCK_SIZE / POIFSConstants.PROPERTY_SIZE;
private Property[] _properties;

+ 3
- 10
src/java/org/apache/poi/poifs/storage/SmallBlockTableReader.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,15 +14,12 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.poifs.storage;

import org.apache.poi.poifs.property.RootProperty;

import java.util.*;
import java.io.IOException;

import java.io.*;
import org.apache.poi.poifs.property.RootProperty;

/**
* This class implements reading the small document block list from an
@@ -31,9 +27,7 @@ import java.io.*;
*
* @author Marc Johnson (mjohnson at apache dot org)
*/

public class SmallBlockTableReader
{
public final class SmallBlockTableReader {

/**
* fetch the small document block list from an existing file
@@ -48,7 +42,6 @@ public class SmallBlockTableReader
*
* @exception IOException
*/

public static BlockList getSmallDocumentBlocks(
final RawDataBlockList blockList, final RootProperty root,
final int sbatStart)

+ 9
- 14
src/java/org/apache/poi/util/IntList.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,12 +14,9 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.util;

import java.util.*;

/**
* A List of int's; as full an implementation of the java.util.List
* interface as possible, with an eye toward minimal creation of
@@ -47,7 +43,6 @@ import java.util.*;
*
* @author Marc Johnson
*/

public class IntList
{
private int[] _array;
@@ -62,14 +57,14 @@ public class IntList
public IntList()
{
this(_default_size);
}
}

public IntList(final int initialCapacity)
{
this(initialCapacity,0);
}
/**
* create a copy of an existing IntList
*
@@ -94,17 +89,17 @@ public class IntList
_array = new int[ initialCapacity ];
if (fillval != 0) {
fillval = fillvalue;
fillArray(fillval, _array, 0);
fillArray(fillval, _array, 0);
}
_limit = 0;
}

private void fillArray(int val, int[] array, int index) {
for (int k = index; k < array.length; k++) {
array[k] = val;
array[k] = val;
}
}
/**
* add the specfied value at the specified index
*
@@ -653,11 +648,11 @@ public class IntList
int size = (new_size == _array.length) ? new_size + 1
: new_size;
int[] new_array = new int[ size ];
if (fillval != 0) {
fillArray(fillval, new_array, _array.length);
fillArray(fillval, new_array, _array.length);
}
System.arraycopy(_array, 0, new_array, 0, _limit);
_array = new_array;
}

+ 3
- 8
src/java/org/apache/poi/util/NullLogger.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,12 +14,9 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.util;

import java.util.*;

/**
* A logger class that strives to make it as easy as possible for
* developers to write log calls, while simultaneously making those
@@ -31,14 +27,13 @@ import java.util.*;
* @author Glen Stampoultzis (glens at apache.org)
* @author Nicola Ken Barozzi (nicolaken at apache.org)
*/

public class NullLogger extends POILogger
{
public void initialize(final String cat)
{
//do nothing
//do nothing
}
/**
* Log a message
*
@@ -462,5 +457,5 @@ public class NullLogger extends POILogger
//do nothing
}

}
}


+ 0
- 4
src/java/org/apache/poi/util/ShortList.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,12 +14,9 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.util;

import java.util.*;

/**
* A List of short's; as full an implementation of the java.util.List
* interface as possible, with an eye toward minimal creation of

+ 0
- 1
src/ooxml/java/org/apache/poi/POIXMLDocument.java ファイルの表示

@@ -22,7 +22,6 @@ import java.util.*;
import org.apache.poi.poifs.common.POIFSConstants;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.PackageHelper;
import org.apache.xmlbeans.XmlException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.poi.openxml4j.opc.*;

+ 97
- 99
src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java ファイルの表示

@@ -26,7 +26,6 @@ import java.util.Map.Entry;
import org.apache.poi.ss.usermodel.FontFamily;
import org.apache.poi.ss.usermodel.FontScheme;
import org.apache.poi.ss.usermodel.BuiltinFormats;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder;
@@ -80,17 +79,17 @@ public class StylesTable extends POIXMLDocumentPart {
* Create a new, empty StylesTable
*/
public StylesTable() {
super();
super();
doc = StyleSheetDocument.Factory.newInstance();
doc.addNewStyleSheet();
// Initialization required in order to make the document readable by MSExcel
initialize();
}

public StylesTable(PackagePart part, PackageRelationship rel) throws IOException {
super(part, rel);
readFrom(part.getInputStream());
}
public StylesTable(PackagePart part, PackageRelationship rel) throws IOException {
super(part, rel);
readFrom(part.getInputStream());
}

/**
* Read this shared styles table from an XML file.
@@ -107,13 +106,13 @@ public class StylesTable extends POIXMLDocumentPart {
numberFormats.put((int)nfmt.getNumFmtId(), nfmt.getFormatCode());
}
if(doc.getStyleSheet().getFonts() != null){
int idx = 0;
for (CTFont font : doc.getStyleSheet().getFonts().getFontArray()) {
XSSFFont f = new XSSFFont(font, idx);
fonts.add(f);
idx++;
}
}
int idx = 0;
for (CTFont font : doc.getStyleSheet().getFonts().getFontArray()) {
XSSFFont f = new XSSFFont(font, idx);
fonts.add(f);
idx++;
}
}
if(doc.getStyleSheet().getFills() != null)
for (CTFill fill : doc.getStyleSheet().getFills().getFillArray()) {
fills.add(new XSSFCellFill(fill));
@@ -149,7 +148,7 @@ public class StylesTable extends POIXMLDocumentPart {
return numberFormats.get(idx);
}

public int putNumberFormat(String fmt) {
public int putNumberFormat(String fmt) {
if (numberFormats.containsValue(fmt)) {
// Find the key, and return that
for(Integer key : numberFormats.keySet() ) {
@@ -174,12 +173,12 @@ public class StylesTable extends POIXMLDocumentPart {
}

public int putFont(XSSFFont font) {
int idx = fonts.indexOf(font);
if (idx != -1) {
return idx;
}
fonts.add(font);
return fonts.size() - 1;
int idx = fonts.indexOf(font);
if (idx != -1) {
return idx;
}
fonts.add(font);
return fonts.size() - 1;
}

public XSSFCellStyle getStyleAt(int idx) {
@@ -205,42 +204,42 @@ public class StylesTable extends POIXMLDocumentPart {
return borders.get(idx);
}

public int putBorder(XSSFCellBorder border) {
int idx = borders.indexOf(border);
if (idx != -1) {
return idx;
}
borders.add(border);
return borders.size() - 1;
public int putBorder(XSSFCellBorder border) {
int idx = borders.indexOf(border);
if (idx != -1) {
return idx;
}
borders.add(border);
return borders.size() - 1;
}

public XSSFCellFill getFillAt(int idx) {
return fills.get(idx);
}
public XSSFCellFill getFillAt(int idx) {
return fills.get(idx);
}

public List<XSSFCellBorder> getBorders(){
return borders;
}
public List<XSSFCellBorder> getBorders(){
return borders;
}

public List<XSSFCellFill> getFills(){
return fills;
}
public List<XSSFCellFill> getFills(){
return fills;
}

public List<XSSFFont> getFonts(){
return fonts;
}
public List<XSSFFont> getFonts(){
return fonts;
}

public Map<Integer, String> getNumberFormats(){
return numberFormats;
}
public Map<Integer, String> getNumberFormats(){
return numberFormats;
}

public int putFill(XSSFCellFill fill) {
int idx = fills.indexOf(fill);
if (idx != -1) {
return idx;
}
fills.add(fill);
return fills.size() - 1;
public int putFill(XSSFCellFill fill) {
int idx = fills.indexOf(fill);
if (idx != -1) {
return idx;
}
fills.add(fill);
return fills.size() - 1;
}

public CTXf getCellXfAt(int idx) {
@@ -315,31 +314,31 @@ public class StylesTable extends POIXMLDocumentPart {
}
doc.getStyleSheet().setNumFmts(formats);

int idx;
int idx;
// Fonts
CTFonts ctFonts = CTFonts.Factory.newInstance();
ctFonts.setCount(fonts.size());
CTFont[] ctfnt = new CTFont[fonts.size()];
idx = 0;
for(XSSFFont f : fonts) ctfnt[idx++] = f.getCTFont();
ctFonts.setFontArray(ctfnt);
CTFont[] ctfnt = new CTFont[fonts.size()];
idx = 0;
for(XSSFFont f : fonts) ctfnt[idx++] = f.getCTFont();
ctFonts.setFontArray(ctfnt);
doc.getStyleSheet().setFonts(ctFonts);

// Fills
CTFills ctFills = CTFills.Factory.newInstance();
ctFills.setCount(fills.size());
CTFill[] ctf = new CTFill[fills.size()];
idx = 0;
for(XSSFCellFill f : fills) ctf[idx++] = f.getCTFill();
ctFills.setFillArray(ctf);
CTFill[] ctf = new CTFill[fills.size()];
idx = 0;
for(XSSFCellFill f : fills) ctf[idx++] = f.getCTFill();
ctFills.setFillArray(ctf);
doc.getStyleSheet().setFills(ctFills);

// Borders
CTBorders ctBorders = CTBorders.Factory.newInstance();
ctBorders.setCount(borders.size());
CTBorder[] ctb = new CTBorder[borders.size()];
idx = 0;
for(XSSFCellBorder b : borders) ctb[idx++] = b.getCTBorder();
CTBorder[] ctb = new CTBorder[borders.size()];
idx = 0;
for(XSSFCellBorder b : borders) ctb[idx++] = b.getCTBorder();
ctBorders.setBorderArray(ctb);
doc.getStyleSheet().setBorders(ctBorders);

@@ -376,13 +375,13 @@ public class StylesTable extends POIXMLDocumentPart {
doc.save(out, options);
}

@Override
protected void commit() throws IOException {
PackagePart part = getPackagePart();
OutputStream out = part.getOutputStream();
writeTo(out);
out.close();
}
@Override
protected void commit() throws IOException {
PackagePart part = getPackagePart();
OutputStream out = part.getOutputStream();
writeTo(out);
out.close();
}

private void initialize() {
//CTFont ctFont = createDefaultFont();
@@ -452,36 +451,35 @@ public class StylesTable extends POIXMLDocumentPart {
return this.dxfs.size();
}

public XSSFCellStyle createCellStyle() {
CTXf xf = CTXf.Factory.newInstance();
xf.setNumFmtId(0);
xf.setFontId(0);
xf.setFillId(0);
xf.setBorderId(0);
xf.setXfId(0);
int xfSize = styleXfs.size();
int indexXf = putCellXf(xf);
return new XSSFCellStyle(indexXf - 1, xfSize - 1, this);
}

/**
* Finds a font that matches the one with the supplied attributes
*/
public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) {
for (XSSFFont font : fonts) {
if ( (font.getBoldweight() == boldWeight)
&& font.getColor() == color
&& font.getFontHeight() == fontHeight
&& font.getFontName().equals(name)
&& font.getItalic() == italic
&& font.getStrikeout() == strikeout
&& font.getTypeOffset() == typeOffset
&& font.getUnderline() == underline)
{
return font;
}
}
return null;
}
public XSSFCellStyle createCellStyle() {
CTXf xf = CTXf.Factory.newInstance();
xf.setNumFmtId(0);
xf.setFontId(0);
xf.setFillId(0);
xf.setBorderId(0);
xf.setXfId(0);
int xfSize = styleXfs.size();
int indexXf = putCellXf(xf);
return new XSSFCellStyle(indexXf - 1, xfSize - 1, this);
}

/**
* Finds a font that matches the one with the supplied attributes
*/
public XSSFFont findFont(short boldWeight, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) {
for (XSSFFont font : fonts) {
if ( (font.getBoldweight() == boldWeight)
&& font.getColor() == color
&& font.getFontHeight() == fontHeight
&& font.getFontName().equals(name)
&& font.getItalic() == italic
&& font.getStrikeout() == strikeout
&& font.getTypeOffset() == typeOffset
&& font.getUnderline() == underline)
{
return font;
}
}
return null;
}
}

+ 28
- 29
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCreationHelper.java ファイルの表示

@@ -17,49 +17,48 @@
package org.apache.poi.xssf.usermodel;

import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.Hyperlink;
import org.apache.poi.ss.usermodel.RichTextString;

public class XSSFCreationHelper implements CreationHelper {
private XSSFWorkbook workbook;

XSSFCreationHelper(XSSFWorkbook wb) {
workbook = wb;
}
/**
* Creates a new XSSFRichTextString for you.
*/
/**
* Creates a new XSSFRichTextString for you.
*/
public XSSFRichTextString createRichTextString(String text) {
XSSFRichTextString rt = new XSSFRichTextString(text);
rt.setStylesTableReference(workbook.getStylesSource());
return rt;
XSSFRichTextString rt = new XSSFRichTextString(text);
rt.setStylesTableReference(workbook.getStylesSource());
return rt;
}
public XSSFDataFormat createDataFormat() {
return workbook.createDataFormat();
}
public XSSFHyperlink createHyperlink(int type) {
return new XSSFHyperlink(type);
}

/**
* Creates a XSSFFormulaEvaluator, the object that evaluates formula cells.
*
* @return a XSSFFormulaEvaluator instance
*/
public XSSFFormulaEvaluator createFormulaEvaluator(){
return new XSSFFormulaEvaluator(workbook);
}
/**
* Creates a XSSFFormulaEvaluator, the object that evaluates formula cells.
*
* @return a XSSFFormulaEvaluator instance
*/
public XSSFFormulaEvaluator createFormulaEvaluator() {
return new XSSFFormulaEvaluator(workbook);
}

/**
* Creates a XSSFClientAnchor. Use this object to position drawing object in a sheet
*
* @return a XSSFClientAnchor instance
* @see org.apache.poi.ss.usermodel.Drawing
*/
public XSSFClientAnchor createClientAnchor(){
return new XSSFClientAnchor();
}
/**
* Creates a XSSFClientAnchor. Use this object to position drawing object in
* a sheet
*
* @return a XSSFClientAnchor instance
* @see org.apache.poi.ss.usermodel.Drawing
*/
public XSSFClientAnchor createClientAnchor() {
return new XSSFClientAnchor();
}
}

+ 10
- 11
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java ファイルの表示

@@ -53,7 +53,6 @@ import org.apache.poi.xssf.model.CalculationChain;
import org.apache.poi.xssf.model.SharedStringsTable;
import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.model.MapInfo;
import org.apache.poi.xssf.extractor.XSSFExportToXml;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
@@ -570,7 +569,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
throw new IllegalStateException("There are no defined names in this workbook");
}
if (nameIndex < 0 || nameIndex > nNames) {
throw new IllegalArgumentException("Specified name index " + nameIndex
throw new IllegalArgumentException("Specified name index " + nameIndex
+ " is outside the allowable range (0.." + (nNames-1) + ").");
}
return namedRanges.get(nameIndex);
@@ -636,7 +635,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
* @param sheetIndex Zero-based sheet index (0 Represents the first sheet to keep consistent with java)
* @return String Null if no print area has been defined
*/
public String getPrintArea(int sheetIndex) {
public String getPrintArea(int sheetIndex) {
XSSFName name = getBuiltInName(XSSFName.BUILTIN_PRINT_AREA, sheetIndex);
if (name == null) return null;
//adding one here because 0 indicates a global named region; doesnt make sense for print areas
@@ -975,7 +974,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
r = escapedName + "!$" + rowRef.getCellRefParts()[1] + ":$" + rowRef2.getCellRefParts()[1];
}
}
StringBuffer rng = new StringBuffer();
rng.append(c);
if(rng.length() > 0 && r.length() > 0) rng.append(',');
@@ -1243,7 +1242,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
}
return embedds;
}
public boolean isHidden() {
throw new RuntimeException("Not implemented yet");
}
@@ -1280,7 +1279,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
* Fired when a formula is deleted from this workbook,
* for example when calling cell.setCellFormula(null)
*
* @see XSSFCell#setCellFormula(String)
* @see XSSFCell#setCellFormula(String)
*/
protected void onDeleteFormula(XSSFCell cell){
if(calcChain != null) {
@@ -1294,7 +1293,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
* <p>
* The calculation chain object specifies the order in which the cells in a workbook were last calculated
* </p>
*
*
* @return the <code>CalculationChain</code> object or <code>null</code> if not defined
*/
public CalculationChain getCalculationChain(){
@@ -1302,19 +1301,19 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
}

/**
*
*
* @return a collection of custom XML mappings defined in this workbook
*/
public Collection<XSSFMap> getCustomXMLMappings(){
return mapInfo == null ? new ArrayList<XSSFMap>() : mapInfo.getAllXSSFMaps();
}
/**
*
*
* @return the helper class used to query the custom XML mapping defined in this workbook
*/
public MapInfo getMapInfo(){
return mapInfo;
}
}

+ 176
- 147
src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java ファイルの表示

@@ -18,119 +18,151 @@
package org.apache.poi.xssf.usermodel.extensions;

import org.apache.poi.ss.usermodel.HeaderFooter;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.helpers.HeaderFooterHelper;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;

/**
* Parent class of all XSSF headers and footers.
*
* For a list of all the different fields that can be
* placed into a header or footer, such as page number,
* bold, underline etc, see the follow formatting syntax
*
*
* For a list of all the different fields that can be placed into a header or
* footer, such as page number, bold, underline etc, see the follow formatting
* syntax
*
*<b> Header/Footer Formatting Syntax</b>
*<p>
* There are a number of formatting codes that can be written inline with the actual header / footer text, which
* affect the formatting in the header or footer.
* There are a number of formatting codes that can be written inline with the
* actual header / footer text, which affect the formatting in the header or
* footer.
*</p>
*
* This example shows the text "Center Bold Header" on the first line (center section), and the date on the second
* line (center section).
* &CCenter &"-,Bold"Bold &"-,Regular"Header_x000A_&D
*
* <b>General Rules:</b>
* There is no required order in which these codes must appear.
* The first occurrence of the following codes turns the formatting ON, the second occurrence turns it OFF again:
*
* This example shows the text "Center Bold Header" on the first line (center
* section), and the date on the second line (center section). &CCenter
* &"-,Bold"Bold &"-,Regular"Header_x000A_&D
*
* <b>General Rules:</b> There is no required order in which these codes must
* appear. The first occurrence of the following codes turns the formatting ON,
* the second occurrence turns it OFF again:
*
* <dl>
* <dt> &L </dt> <dd>code for "left section" (there are three header / footer locations, "left", "center", and "right"). When
* two or more occurrences of this section marker exist, the contents from all markers are concatenated, in the
* order of appearance, and placed into the left section.</dd>
* <dt> &P </dt> <dd> code for "current page #"</dd>
* <dt> &N </dt> <dd> code for "total pages"</dd>
* <dt>&font size </dt> <dd> code for "text font size", where font size is a font size in points.</dd>
* <dt> &K </dt> <dd> code for "text font color"
* RGB Color is specified as RRGGBB
* Theme Color is specifed as TTSNN where TT is the theme color Id, S is either "+" or "-" of the tint/shade
* value, NN is the tint/shade value.</dd>
* <dt> &S </dt> <dd> code for "text strikethrough" on / off</dd>
* <dt> &X </dt> <dd> code for "text super script" on / off</dd>
* <dt> &Y </dt> <dd> code for "text subscript" on / off</dd>
* <dt> &C </dt> <dd> code for "center section". When two or more occurrences of this section marker exist, the contents
* from all markers are concatenated, in the order of appearance, and placed into the center section.
* SpreadsheetML Reference Material - Worksheets 1966</dd>
* <dt> &D </dt> <dd> code for "date"</dd>
* <dt> &T </dt> <dd> code for "time"</dd>
* <dt> &G </dt> <dd> code for "picture as background"</dd>
* <dt> &U </dt> <dd> code for "text single underline"</dd>
* <dt> &E </dt> <dd> code for "double underline"</dd>
* <dt> &R </dt> <dd> code for "right section". When two or more occurrences of this section marker exist, the contents
* from all markers are concatenated, in the order of appearance, and placed into the right section.</dd>
* <dt> &Z </dt> <dd> code for "this workbook's file path"</dd>
* <dt> &F </dt> <dd> code for "this workbook's file name"</dd>
* <dt> &A </dt> <dd> code for "sheet tab name"</dd>
* <dt> &+ </dt> <dd> code for add to page #.</dd>
* <dt> &- </dt> <dd> code for subtract from page #.</dd>
* <dt> &"font name,font type" - code for "text font name" and "text font type", where font name and font type
* are strings specifying the name and type of the font, separated by a comma. When a hyphen appears in font
* name, it means "none specified". Both of font name and font type can be localized values.</dd>
* <dt> &"-,Bold" </dt> <dd> code for "bold font style"</dd>
* <dt> &B </dt> <dd> also means "bold font style"</dd>
* <dt> &"-,Regular" </dt> <dd> code for "regular font style"</dd>
* <dt> &"-,Italic" </dt> <dd> code for "italic font style"</dd>
* <dt> &I </dt> <dd> also means "italic font style"</dd>
* <dt> &"-,Bold Italic" </dt> <dd> code for "bold italic font style"</dd>
* <dt> &O </dt> <dd> code for "outline style"</dd>
* <dt> &H </dt> <dd> code for "shadow style"</dd>
* <dt>&L</dt>
* <dd>code for "left section" (there are three header / footer locations,
* "left", "center", and "right"). When two or more occurrences of this section
* marker exist, the contents from all markers are concatenated, in the order of
* appearance, and placed into the left section.</dd>
* <dt>&P</dt>
* <dd>code for "current page #"</dd>
* <dt>&N</dt>
* <dd>code for "total pages"</dd>
* <dt>&font size</dt>
* <dd>code for "text font size", where font size is a font size in points.</dd>
* <dt>&K</dt>
* <dd>code for "text font color" RGB Color is specified as RRGGBB Theme Color
* is specifed as TTSNN where TT is the theme color Id, S is either "+" or "-"
* of the tint/shade value, NN is the tint/shade value.</dd>
* <dt>&S</dt>
* <dd>code for "text strikethrough" on / off</dd>
* <dt>&X</dt>
* <dd>code for "text super script" on / off</dd>
* <dt>&Y</dt>
* <dd>code for "text subscript" on / off</dd>
* <dt>&C</dt>
* <dd>code for "center section". When two or more occurrences of this section
* marker exist, the contents from all markers are concatenated, in the order of
* appearance, and placed into the center section. SpreadsheetML Reference
* Material - Worksheets 1966</dd>
* <dt>&D</dt>
* <dd>code for "date"</dd>
* <dt>&T</dt>
* <dd>code for "time"</dd>
* <dt>&G</dt>
* <dd>code for "picture as background"</dd>
* <dt>&U</dt>
* <dd>code for "text single underline"</dd>
* <dt>&E</dt>
* <dd>code for "double underline"</dd>
* <dt>&R</dt>
* <dd>code for "right section". When two or more occurrences of this section
* marker exist, the contents from all markers are concatenated, in the order of
* appearance, and placed into the right section.</dd>
* <dt>&Z</dt>
* <dd>code for "this workbook's file path"</dd>
* <dt>&F</dt>
* <dd>code for "this workbook's file name"</dd>
* <dt>&A</dt>
* <dd>code for "sheet tab name"</dd>
* <dt>&+</dt>
* <dd>code for add to page #.</dd>
* <dt>&-</dt>
* <dd>code for subtract from page #.</dd>
* <dt>&"font name,font type" - code for "text font name" and "text font type",
* where font name and font type are strings specifying the name and type of the
* font, separated by a comma. When a hyphen appears in font name, it means
* "none specified". Both of font name and font type can be localized
* values.</dd>
* <dt>&"-,Bold"</dt>
* <dd>code for "bold font style"</dd>
* <dt>&B</dt>
* <dd>also means "bold font style"</dd>
* <dt>&"-,Regular"</dt>
* <dd>code for "regular font style"</dd>
* <dt>&"-,Italic"</dt>
* <dd>code for "italic font style"</dd>
* <dt>&I</dt>
* <dd>also means "italic font style"</dd>
* <dt>&"-,Bold Italic"</dt>
* <dd>code for "bold italic font style"</dd>
* <dt>&O</dt>
* <dd>code for "outline style"</dd>
* <dt>&H</dt>
* <dd>code for "shadow style"</dd>
* </dl>
*
*
*
*
*/
public abstract class XSSFHeaderFooter implements HeaderFooter {
private HeaderFooterHelper helper;
private CTHeaderFooter headerFooter;
private HeaderFooterHelper helper;
private CTHeaderFooter headerFooter;

private boolean stripFields = false;

/**
* Create an instance of XSSFHeaderFooter from the supplied XML bean
*
* @param headerFooter
*/
public XSSFHeaderFooter(CTHeaderFooter headerFooter) {
this.headerFooter = headerFooter;
this.helper = new HeaderFooterHelper();
}
/**
* Returns the underlying CTHeaderFooter xml bean
*
* @return the underlying CTHeaderFooter xml bean
*/
public CTHeaderFooter getHeaderFooter() {
return this.headerFooter;
}

public String getValue() {
String value = getText();
if(value == null)
return "";
return value;
}
public XSSFHeaderFooter(CTHeaderFooter headerFooter) {
this.headerFooter = headerFooter;
this.helper = new HeaderFooterHelper();
}

/**
* Returns the underlying CTHeaderFooter xml bean
*
* @return the underlying CTHeaderFooter xml bean
*/
public CTHeaderFooter getHeaderFooter() {
return this.headerFooter;
}

public String getValue() {
String value = getText();
if (value == null)
return "";
return value;
}

/**
* Are fields currently being stripped from
* the text that this {@link XSSFHeaderFooter} returns?
* Default is false, but can be changed
* Are fields currently being stripped from the text that this
* {@link XSSFHeaderFooter} returns? Default is false, but can be changed
*/
public boolean areFieldsStripped() {
return stripFields;
}

/**
* Should fields (eg macros) be stripped from
* the text that this class returns?
* Default is not to strip.
* Should fields (eg macros) be stripped from the text that this class
* returns? Default is not to strip.
*
* @param stripFields
*/
public void setAreFieldsStripped(boolean stripFields) {
@@ -138,69 +170,66 @@ public abstract class XSSFHeaderFooter implements HeaderFooter {
}

/**
* Removes any fields (eg macros, page markers etc)
* from the string.
* Normally used to make some text suitable for showing
* to humans, and the resultant text should not normally
* be saved back into the document!
* Removes any fields (eg macros, page markers etc) from the string.
* Normally used to make some text suitable for showing to humans, and the
* resultant text should not normally be saved back into the document!
*/
public static String stripFields(String text) {
return org.apache.poi.hssf.usermodel.HeaderFooter.stripFields(text);
}

public abstract String getText();
protected abstract void setText(String text);

/**
* get the text representing the center part of this element
*/
public String getCenter() {
String text = helper.getCenterSection(getText());
if(stripFields)
return stripFields(text);
return text;
}

/**
* get the text representing the left part of this element
*/
public String getLeft() {
String text = helper.getLeftSection(getText());
if(stripFields)
return stripFields(text);
return text;
}

/**
* get the text representing the right part of this element
*/
public String getRight() {
String text = helper.getRightSection(getText());
if(stripFields)
return stripFields(text);
return text;
}

/**
* set a centered string value for this element
*/
public void setCenter(String newCenter) {
setText(helper.setCenterSection(getText(), newCenter));
}

/**
* set a left string value for this element
*/
public void setLeft(String newLeft) {
setText(helper.setLeftSection(getText(), newLeft));
}

/**
* set a right string value for this element
*/
public void setRight(String newRight) {
setText(helper.setRightSection(getText(), newRight));
}
public abstract String getText();

protected abstract void setText(String text);

/**
* get the text representing the center part of this element
*/
public String getCenter() {
String text = helper.getCenterSection(getText());
if (stripFields)
return stripFields(text);
return text;
}

/**
* get the text representing the left part of this element
*/
public String getLeft() {
String text = helper.getLeftSection(getText());
if (stripFields)
return stripFields(text);
return text;
}

/**
* get the text representing the right part of this element
*/
public String getRight() {
String text = helper.getRightSection(getText());
if (stripFields)
return stripFields(text);
return text;
}

/**
* set a centered string value for this element
*/
public void setCenter(String newCenter) {
setText(helper.setCenterSection(getText(), newCenter));
}

/**
* set a left string value for this element
*/
public void setLeft(String newLeft) {
setText(helper.setLeftSection(getText(), newLeft));
}

/**
* set a right string value for this element
*/
public void setRight(String newRight) {
setText(helper.setRightSection(getText(), newRight));
}
}

+ 17
- 20
src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java ファイルの表示

@@ -17,7 +17,6 @@

package org.apache.poi.openxml4j.opc;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
@@ -37,8 +36,6 @@ import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.internal.ContentTypeManager;
import org.apache.poi.openxml4j.opc.internal.FileHelper;
import org.apache.poi.util.TempFile;
import org.apache.poi.util.IOUtils;
import org.apache.poi.util.POILogger;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
@@ -64,19 +61,19 @@ public final class TestPackage extends TestCase {
//ZipFileAssert.assertEquals(originalFile, targetFile);
assertTrue(targetFile.delete());
}
/**
* Test that when we create a new Package, we give it
* the correct default content types
*/
public void testCreateGetsContentTypes() throws Exception {
File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestCreatePackageTMP.docx");
// Zap the target file, in case of an earlier run
if(targetFile.exists()) targetFile.delete();
OPCPackage pkg = OPCPackage.create(targetFile);
// Check it has content types for rels and xml
ContentTypeManager ctm = getContentTypeManager(pkg);
assertEquals(
@@ -108,7 +105,7 @@ public final class TestPackage extends TestCase {

// Zap the target file, in case of an earlier run
if(targetFile.exists()) targetFile.delete();
// Create a package
OPCPackage pkg = OPCPackage.create(targetFile);
PackagePartName corePartName = PackagingURIHelper
@@ -142,7 +139,7 @@ public final class TestPackage extends TestCase {
//ZipFileAssert.assertEquals(expectedFile, targetFile);
assertTrue(targetFile.delete());
}
/**
* Tests that we can create a new package, add a core
* document and another part, save and re-load and
@@ -151,7 +148,7 @@ public final class TestPackage extends TestCase {
public void testCreatePackageWithCoreDocument() throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OPCPackage pkg = OPCPackage.create(baos);
// Add a core document
PackagePartName corePartName = PackagingURIHelper.createPartName("/xl/workbook.xml");
// Create main part relationship
@@ -162,7 +159,7 @@ public final class TestPackage extends TestCase {
OutputStream coreOut = corePart.getOutputStream();
coreOut.write("<dummy-xml />".getBytes());
coreOut.close();
// And another bit
PackagePartName sheetPartName = PackagingURIHelper.createPartName("/xl/worksheets/sheet1.xml");
PackageRelationship rel =
@@ -184,8 +181,8 @@ public final class TestPackage extends TestCase {
assertEquals("/", coreRel.getSourceURI().toString());
assertEquals("/xl/workbook.xml", coreRel.getTargetURI().toString());
assertNotNull(pkg.getPart(coreRel));
// Save and re-load
pkg.close();
File tmp = TempFile.createTempFile("testCreatePackageWithCoreDocument", ".zip");
@@ -290,7 +287,7 @@ public final class TestPackage extends TestCase {
//ZipFileAssert.assertEquals(expectedFile, targetFile);
assertTrue(targetFile.delete());
}
/**
* Checks that we can write a package to a simple
* OutputStream, in addition to the normal writing
@@ -318,15 +315,15 @@ public final class TestPackage extends TestCase {
*/
public void testOpenFromInputStream() throws Exception {
String originalFile = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCommon.docx");
FileInputStream finp = new FileInputStream(originalFile);
OPCPackage p = OPCPackage.open(finp);
assertNotNull(p);
assertNotNull(p.getRelationships());
assertEquals(12, p.getParts().size());
// Check it has the usual bits
assertTrue(p.hasRelationships());
assertTrue(p.containPart(PackagingURIHelper.createPartName("/_rels/.rels")));
@@ -407,7 +404,7 @@ public final class TestPackage extends TestCase {
// Don't save modifications
p.revert();
}
public void testDeletePartRecursive() throws InvalidFormatException {
TreeMap<PackagePartName, String> expectedValues;
TreeMap<PackagePartName, String> values;
@@ -445,7 +442,7 @@ public final class TestPackage extends TestCase {
// Don't save modifications
p.revert();
}
private static ContentTypeManager getContentTypeManager(OPCPackage pkg) throws Exception {
Field f = OPCPackage.class.getDeclaredField("contentTypeManager");
f.setAccessible(true);

+ 5
- 7
src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java ファイルの表示

@@ -24,7 +24,6 @@ import junit.framework.TestCase;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.PictureData;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
@@ -35,8 +34,8 @@ public class TestLoadSaveXSSF extends TestCase {

String filename;

protected void setUp() throws Exception {
super.setUp();
protected void setUp() {
System.setProperty("org.apache.poi.util.POILogger", org.apache.poi.util.CommonsLogger.class.getName());
filename = System.getProperty("XSSF.testdata.path");
if (filename == null) {
@@ -52,12 +51,12 @@ public class TestLoadSaveXSSF extends TestCase {
Row row = sheet.getRow(0);
Cell cell = row.getCell((short) 1);
assertNotNull(cell);
assertEquals(111.0, cell.getNumericCellValue());
assertEquals(111.0, cell.getNumericCellValue(), 0.0);
cell = row.getCell((short) 0);
assertEquals("Lorem", cell.getRichStringCellValue().getString());
}

// TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successfull.
// TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successful.
public void testLoadStyles() throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook(new File(filename, "styles.xlsx").getAbsolutePath());
Sheet sheet = workbook.getSheetAt(0);
@@ -67,11 +66,10 @@ public class TestLoadSaveXSSF extends TestCase {
// assertNotNull(style);
}

// TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successfull.
// TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successful.
public void testLoadPictures() throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook(new File(filename, "picture.xlsx").getAbsolutePath());
List<XSSFPictureData> pictures = workbook.getAllPictures();
assertEquals(1, pictures.size());
}

}

+ 4
- 8
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java ファイルの表示

@@ -17,21 +17,17 @@

package org.apache.poi.xssf.usermodel;

import java.io.File;
import java.util.List;

import junit.framework.TestCase;

import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackagePart;
import org.apache.poi.openxml4j.opc.PackagingURIHelper;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.XSSFITestDataProvider;
import org.apache.poi.ss.usermodel.BaseTestBugzillaIssues;
import org.apache.poi.POIXMLDocumentPart;
import org.apache.poi.xssf.XSSFITestDataProvider;
import org.apache.poi.xssf.XSSFTestDataSamples;

public class TestXSSFBugs extends BaseTestBugzillaIssues {
public final class TestXSSFBugs extends BaseTestBugzillaIssues {
@Override
protected XSSFITestDataProvider getTestDataProvider(){
return XSSFITestDataProvider.getInstance();

+ 2
- 15
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDataFormat.java ファイルの表示

@@ -17,29 +17,16 @@

package org.apache.poi.xssf.usermodel;

import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import junit.framework.TestCase;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.ITestDataProvider;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.ss.usermodel.BaseTestDataFormat;
import org.apache.poi.xssf.XSSFITestDataProvider;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCell;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STCellType;

/**
* Tests for {@link XSSFDataFormat}
*
*/
public final class TestXSSFDataFormat extends BaseTestDataFormat {

@Override
protected ITestDataProvider getTestDataProvider(){
return XSSFITestDataProvider.getInstance();

+ 8
- 12
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFont.java ファイルの表示

@@ -17,12 +17,8 @@

package org.apache.poi.xssf.usermodel;

import junit.framework.TestCase;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.XSSFITestDataProvider;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBooleanProperty;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont;
@@ -38,14 +34,14 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignRun;

public final class TestXSSFFont extends BaseTestFont{

@Override
protected XSSFITestDataProvider getTestDataProvider(){
return XSSFITestDataProvider.getInstance();
}
@Override
protected XSSFITestDataProvider getTestDataProvider() {
return XSSFITestDataProvider.getInstance();
}

public void testDefaultFont() {
baseTestDefaultFont("Calibri", (short)220, IndexedColors.BLACK.getIndex());
}
public void testDefaultFont() {
baseTestDefaultFont("Calibri", (short) 220, IndexedColors.BLACK.getIndex());
}

public void testConstructor() {
XSSFFont xssfFont=new XSSFFont();
@@ -160,7 +156,7 @@ public final class TestXSSFFont extends BaseTestFont{
xssfFont.setUnderline(Font.U_DOUBLE);
assertEquals(ctFont.getUArray().length,1);
assertEquals(STUnderlineValues.DOUBLE,ctFont.getUArray(0).getVal());
xssfFont.setUnderline(FontUnderline.DOUBLE_ACCOUNTING);
assertEquals(ctFont.getUArray().length,1);
assertEquals(STUnderlineValues.DOUBLE_ACCOUNTING,ctFont.getUArray(0).getVal());

+ 2
- 5
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java ファイルの表示

@@ -17,7 +17,6 @@

package org.apache.poi.xssf.usermodel;

import junit.framework.TestCase;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.XSSFITestDataProvider;
import org.apache.poi.ss.usermodel.BaseTestNamedRange;
@@ -37,7 +36,7 @@ public final class TestXSSFName extends BaseTestNamedRange {
// First test that setting RR&C for same sheet more than once only creates a
// single Print_Titles built-in record
XSSFWorkbook wb = getTestDataProvider().createWorkbook();
XSSFSheet sheet = wb.createSheet("First Sheet");
wb.createSheet("First Sheet");

wb.setRepeatingRowsAndColumns(0, -1, -1, -1, -1);

@@ -77,7 +76,7 @@ public final class TestXSSFName extends BaseTestNamedRange {

// check that setting RR&C on a second sheet causes a new Print_Titles built-in
// name to be created
sheet = nwb.createSheet("SecondSheet");
nwb.createSheet("SecondSheet");
nwb.setRepeatingRowsAndColumns(1, 1, 2, 0, 0);

assertEquals(2, nwb.getNumberOfNames());
@@ -88,6 +87,4 @@ public final class TestXSSFName extends BaseTestNamedRange {

nwb.setRepeatingRowsAndColumns(1, -1, -1, -1, -1);
}


}

+ 0
- 1
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPicture.java ファイルの表示

@@ -17,7 +17,6 @@

package org.apache.poi.xssf.usermodel;

import junit.framework.TestCase;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.BaseTestPicture;
import org.apache.poi.xssf.XSSFITestDataProvider;

+ 4
- 6
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPictureData.java ファイルの表示

@@ -17,14 +17,12 @@

package org.apache.poi.xssf.usermodel;

import java.util.Arrays;
import java.util.List;

import junit.framework.TestCase;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.POIXMLDocumentPart;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTDrawing;

import java.util.List;
import java.util.Arrays;
import java.io.IOException;
import org.apache.poi.xssf.XSSFTestDataSamples;

/**
* @author Yegor Kozlov

+ 4
- 4
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFPrintSetup.java ファイルの表示

@@ -187,13 +187,13 @@ public class TestXSSFPrintSetup extends TestCase {
pMargins.setHeader(1.5);
pMargins.setFooter(2);
XSSFPrintSetup printSetup = new XSSFPrintSetup(worksheet);
assertEquals(1.5, printSetup.getHeaderMargin());
assertEquals(2.0, printSetup.getFooterMargin());
assertEquals(1.5, printSetup.getHeaderMargin(), 0.0);
assertEquals(2.0, printSetup.getFooterMargin(), 0.0);

printSetup.setHeaderMargin(5);
printSetup.setFooterMargin(3.5);
assertEquals(5.0, pMargins.getHeader());
assertEquals(3.5, pMargins.getFooter());
assertEquals(5.0, pMargins.getHeader(), 0.0);
assertEquals(3.5, pMargins.getFooter(), 0.0);
}

public void testSetGetCopies() {

+ 5
- 21
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java ファイルの表示

@@ -17,23 +17,9 @@

package org.apache.poi.xssf.usermodel;

import java.io.*;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

import junit.framework.TestCase;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Comment;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.model.CommentsTable;
import org.apache.xmlbeans.XmlOptions;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRst;

/**
* Tests functionality of the XSSFRichTextRun object
@@ -42,7 +28,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
*/
public final class TestXSSFRichTextString extends TestCase {

public void testCreate() throws Exception {
public void testCreate() {

XSSFRichTextString rt = new XSSFRichTextString("Apache POI");
assertEquals("Apache POI", rt.getString());
@@ -59,7 +45,7 @@ public final class TestXSSFRichTextString extends TestCase {
}


public void testApplyFont() throws Exception {
public void testApplyFont() {

XSSFRichTextString rt = new XSSFRichTextString();
rt.append("123");
@@ -85,7 +71,7 @@ public final class TestXSSFRichTextString extends TestCase {
assertEquals(1, rt.getLengthOfFormattingRun(3));
}

public void testClearFormatting() throws Exception {
public void testClearFormatting() {

XSSFRichTextString rt = new XSSFRichTextString("Apache POI");
assertEquals("Apache POI", rt.getString());
@@ -105,10 +91,9 @@ public final class TestXSSFRichTextString extends TestCase {
rt.clearFormatting();
assertEquals("Apache POI", rt.getString());
assertEquals(0, rt.numFormattingRuns());

}

public void testGetFonts() throws Exception {
public void testGetFonts() {

XSSFRichTextString rt = new XSSFRichTextString();

@@ -129,6 +114,5 @@ public final class TestXSSFRichTextString extends TestCase {
XSSFFont font2$ = rt.getFontOfFormattingRun(1);
assertEquals(font2.getBold(), font2$.getBold());
assertEquals(font2.getFontName(), font2$.getFontName());

}
}

+ 1
- 13
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRow.java ファイルの表示

@@ -17,21 +17,9 @@

package org.apache.poi.xssf.usermodel;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Iterator;

import junit.framework.TestCase;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.xssf.model.SharedStringsTable;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.ss.usermodel.BaseTestRow;
import org.apache.poi.xssf.XSSFITestDataProvider;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFCell;

/**
* Tests for XSSFRow

+ 27
- 24
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java ファイルの表示

@@ -18,19 +18,23 @@
package org.apache.poi.xssf.usermodel;

import java.io.File;
import java.util.Iterator;

import junit.framework.TestCase;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.usermodel.BaseTestSheet;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.XSSFITestDataProvider;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.model.CommentsTable;
import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.xssf.model.CalculationChain;
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.XSSFITestDataProvider;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComments;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPane;


public class TestXSSFSheet extends BaseTestSheet {
@@ -205,14 +209,14 @@ public class TestXSSFSheet extends BaseTestSheet {
CTWorksheet ctWorksheet = sheet.getCTWorksheet();

sheet.createFreezePane(2, 4);
assertEquals((double) 2, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getXSplit());
assertEquals(2.0, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getXSplit(), 0.0);
assertEquals(STPane.BOTTOM_RIGHT, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getActivePane());
sheet.createFreezePane(3, 6, 10, 10);
assertEquals((double) 3, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getXSplit());
assertEquals(3.0, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getXSplit(), 0.0);
// assertEquals(10, sheet.getTopRow());
// assertEquals(10, sheet.getLeftCol());
sheet.createSplitPane(4, 8, 12, 12, 1);
assertEquals((double) 8, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getYSplit());
assertEquals(8.0, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getYSplit(), 0.0);
assertEquals(STPane.BOTTOM_RIGHT, ctWorksheet.getSheetViews().getSheetViewArray(0).getPane().getActivePane());
}

@@ -375,15 +379,15 @@ public class TestXSSFSheet extends BaseTestSheet {
public void testSetColumnGroupCollapsed(){
Workbook wb = new XSSFWorkbook();
XSSFSheet sheet1 =(XSSFSheet) wb.createSheet();
CTCols cols=sheet1.getCTWorksheet().getColsArray(0);
assertEquals(0,cols.sizeOfColArray());
sheet1.groupColumn( (short)4, (short)7 );
sheet1.groupColumn( (short)9, (short)12 );

assertEquals(2,cols.sizeOfColArray());
assertEquals(false,cols.getColArray(0).isSetHidden());
assertEquals(true, cols.getColArray(0).isSetCollapsed());
assertEquals(5, cols.getColArray(0).getMin()); // 1 based
@@ -395,7 +399,7 @@ public class TestXSSFSheet extends BaseTestSheet {

sheet1.groupColumn( (short)10, (short)11 );
assertEquals(4,cols.sizeOfColArray());
assertEquals(false,cols.getColArray(0).isSetHidden());
assertEquals(true, cols.getColArray(0).isSetCollapsed());
assertEquals(5, cols.getColArray(0).getMin()); // 1 based
@@ -412,11 +416,11 @@ public class TestXSSFSheet extends BaseTestSheet {
assertEquals(true, cols.getColArray(3).isSetCollapsed());
assertEquals(13, cols.getColArray(3).getMin()); // 1 based
assertEquals(13, cols.getColArray(3).getMax()); // 1 based
// collapse columns - 1
sheet1.setColumnGroupCollapsed( (short)5, true );
assertEquals(5,cols.sizeOfColArray());
assertEquals(true, cols.getColArray(0).isSetHidden());
assertEquals(true, cols.getColArray(0).isSetCollapsed());
assertEquals(5, cols.getColArray(0).getMin()); // 1 based
@@ -501,7 +505,7 @@ public class TestXSSFSheet extends BaseTestSheet {
//outline level 2: the line under ==> collapsed==True
assertEquals(2,cols.getColArray(3).getOutlineLevel());
assertEquals(true,cols.getColArray(4).isSetCollapsed());
assertEquals(false,cols.getColArray(0).isSetHidden());
assertEquals(true, cols.getColArray(0).isSetCollapsed());
assertEquals(5, cols.getColArray(0).getMin()); // 1 based
@@ -610,7 +614,7 @@ public class TestXSSFSheet extends BaseTestSheet {
sheet1.groupRow( 7, 14 );
sheet1.groupRow( 16, 19 );

assertEquals(14,sheet1.getPhysicalNumberOfRows());
assertEquals(14,sheet1.getPhysicalNumberOfRows());
assertEquals(false,sheet1.getRow(6).getCTRow().isSetCollapsed());
assertEquals(false,sheet1.getRow(6).getCTRow().isSetHidden());
assertEquals(false,sheet1.getRow(7).getCTRow().isSetCollapsed());
@@ -625,7 +629,7 @@ public class TestXSSFSheet extends BaseTestSheet {
assertEquals(false,sheet1.getRow(18).getCTRow().isSetHidden());

//collapsed
sheet1.setRowGroupCollapsed( 7, true );
sheet1.setRowGroupCollapsed( 7, true );

assertEquals(false,sheet1.getRow(6).getCTRow().isSetCollapsed());
assertEquals(false,sheet1.getRow(6).getCTRow().isSetHidden());
@@ -698,7 +702,7 @@ public class TestXSSFSheet extends BaseTestSheet {
// XML is 1 based, POI is 0 based
assertEquals(2, col.getMin());
assertEquals(2, col.getMax());
assertEquals(22.0, col.getWidth());
assertEquals(22.0, col.getWidth(), 0.0);

// Now set another
sheet.setColumnWidth(3, 33 * 256);
@@ -711,12 +715,11 @@ public class TestXSSFSheet extends BaseTestSheet {
col = cols.getColArray(0);
assertEquals(2, col.getMin()); // POI 1
assertEquals(2, col.getMax());
assertEquals(22.0, col.getWidth());
assertEquals(22.0, col.getWidth(), 0.0);

col = cols.getColArray(1);
assertEquals(4, col.getMin()); // POI 3
assertEquals(4, col.getMax());
assertEquals(33.0, col.getWidth());
assertEquals(33.0, col.getWidth(), 0.0);
}

}

+ 126
- 131
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java ファイルの表示

@@ -20,31 +20,26 @@ package org.apache.poi.xssf.usermodel;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.zip.CRC32;
import java.util.List;
import java.util.zip.CRC32;

import junit.framework.TestCase;

import org.apache.poi.POIXMLProperties;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.XSSFITestDataProvider;
import org.apache.poi.xssf.model.StylesTable;
import org.apache.poi.openxml4j.opc.*;
import org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.util.TempFile;
import org.apache.poi.POIXMLProperties;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook;
import org.apache.poi.xssf.XSSFITestDataProvider;
import org.apache.poi.xssf.XSSFTestDataSamples;
import org.apache.poi.xssf.model.StylesTable;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbookPr;

public final class TestXSSFWorkbook extends BaseTestWorkbook {

@Override
protected XSSFITestDataProvider getTestDataProvider(){
return XSSFITestDataProvider.getInstance();
}
@Override
protected XSSFITestDataProvider getTestDataProvider(){
return XSSFITestDataProvider.getInstance();
}


/**
@@ -53,94 +48,94 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook {
public void testSaveLoadNew() throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook();

//check that the default date system is set to 1900
CTWorkbookPr pr = workbook.getCTWorkbook().getWorkbookPr();
assertNotNull(pr);
assertTrue(pr.isSetDate1904());
assertFalse("XSSF must use the 1900 date system", pr.getDate1904());
//check that the default date system is set to 1900
CTWorkbookPr pr = workbook.getCTWorkbook().getWorkbookPr();
assertNotNull(pr);
assertTrue(pr.isSetDate1904());
assertFalse("XSSF must use the 1900 date system", pr.getDate1904());

Sheet sheet1 = workbook.createSheet("sheet1");
Sheet sheet1 = workbook.createSheet("sheet1");
Sheet sheet2 = workbook.createSheet("sheet2");
workbook.createSheet("sheet3");
RichTextString rts = workbook.getCreationHelper().createRichTextString("hello world");
sheet1.createRow(0).createCell((short)0).setCellValue(1.2);
sheet1.createRow(1).createCell((short)0).setCellValue(rts);
sheet2.createRow(0);
assertEquals(0, workbook.getSheetAt(0).getFirstRowNum());
assertEquals(1, workbook.getSheetAt(0).getLastRowNum());
assertEquals(0, workbook.getSheetAt(1).getFirstRowNum());
assertEquals(0, workbook.getSheetAt(1).getLastRowNum());
assertEquals(0, workbook.getSheetAt(2).getFirstRowNum());
assertEquals(0, workbook.getSheetAt(2).getLastRowNum());
File file = TempFile.createTempFile("poi-", ".xlsx");
OutputStream out = new FileOutputStream(file);
workbook.write(out);
out.close();
// Check the package contains what we'd expect it to
OPCPackage pkg = OPCPackage.open(file.toString());
PackagePart wbRelPart =
PackagePart wbRelPart =
pkg.getPart(PackagingURIHelper.createPartName("/xl/_rels/workbook.xml.rels"));
assertNotNull(wbRelPart);
assertTrue(wbRelPart.isRelationshipPart());
assertEquals(ContentTypes.RELATIONSHIPS_PART, wbRelPart.getContentType());
PackagePart wbPart =
PackagePart wbPart =
pkg.getPart(PackagingURIHelper.createPartName("/xl/workbook.xml"));
// Links to the three sheets, shared strings and styles
assertTrue(wbPart.hasRelationships());
assertEquals(5, wbPart.getRelationships().size());
// Load back the XSSFWorkbook
workbook = new XSSFWorkbook(pkg);
assertEquals(3, workbook.getNumberOfSheets());
assertNotNull(workbook.getSheetAt(0));
assertNotNull(workbook.getSheetAt(1));
assertNotNull(workbook.getSheetAt(2));
assertNotNull(workbook.getSharedStringSource());
assertNotNull(workbook.getStylesSource());
assertEquals(0, workbook.getSheetAt(0).getFirstRowNum());
assertEquals(1, workbook.getSheetAt(0).getLastRowNum());
assertEquals(0, workbook.getSheetAt(1).getFirstRowNum());
assertEquals(0, workbook.getSheetAt(1).getLastRowNum());
assertEquals(0, workbook.getSheetAt(2).getFirstRowNum());
assertEquals(0, workbook.getSheetAt(2).getLastRowNum());
sheet1 = workbook.getSheetAt(0);
assertEquals(1.2, sheet1.getRow(0).getCell(0).getNumericCellValue(), 0.0001);
assertEquals("hello world", sheet1.getRow(1).getCell(0).getRichStringCellValue().getString());
}
public void testExisting() throws Exception {
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx");
assertNotNull(workbook.getSharedStringSource());
assertNotNull(workbook.getStylesSource());
// And check a few low level bits too
OPCPackage pkg = OPCPackage.open(HSSFTestDataSamples.openSampleFileStream("Formatting.xlsx"));
PackagePart wbPart =
PackagePart wbPart =
pkg.getPart(PackagingURIHelper.createPartName("/xl/workbook.xml"));
// Links to the three sheets, shared, styles and themes
assertTrue(wbPart.hasRelationships());
assertEquals(6, wbPart.getRelationships().size());

}
public void testGetCellStyleAt(){
XSSFWorkbook workbook = new XSSFWorkbook();
short i = 0;
//get default style
CellStyle cellStyleAt = workbook.getCellStyleAt(i);
assertNotNull(cellStyleAt);
//get custom style
StylesTable styleSource = workbook.getStylesSource();
XSSFCellStyle customStyle = new XSSFCellStyle(styleSource);
@@ -149,9 +144,9 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook {
customStyle.setFont(font);
int x = styleSource.putStyle(customStyle);
cellStyleAt = workbook.getCellStyleAt((short)x);
assertNotNull(cellStyleAt);
assertNotNull(cellStyleAt);
}
public void testGetFontAt(){
XSSFWorkbook workbook = new XSSFWorkbook();
StylesTable styleSource = workbook.getStylesSource();
@@ -159,7 +154,7 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook {
//get default font
Font fontAt = workbook.getFontAt(i);
assertNotNull(fontAt);
//get customized font
XSSFFont customFont = new XSSFFont();
customFont.setItalic(true);
@@ -167,23 +162,23 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook {
fontAt = workbook.getFontAt((short)x);
assertNotNull(fontAt);
}
public void testGetNumCellStyles(){
XSSFWorkbook workbook = new XSSFWorkbook();
short i = workbook.getNumCellStyles();
//get default cellStyles
assertEquals(1, i);
//get wrong value
assertNotSame(2, i);
assertNotSame(2, i);
}
public void testLoadSave() {
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx");
assertEquals(3, workbook.getNumberOfSheets());
assertEquals("dd/mm/yyyy", workbook.getSheetAt(0).getRow(1).getCell(0).getRichStringCellValue().getString());
assertNotNull(workbook.getSharedStringSource());
assertNotNull(workbook.getStylesSource());
// Write out, and check
// Load up again, check all still there
XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(workbook);
@@ -191,7 +186,7 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook {
assertNotNull(wb2.getSheetAt(0));
assertNotNull(wb2.getSheetAt(1));
assertNotNull(wb2.getSheetAt(2));
assertEquals("dd/mm/yyyy", wb2.getSheetAt(0).getRow(1).getCell(0).getRichStringCellValue().getString());
assertEquals("yyyy/mm/dd", wb2.getSheetAt(0).getRow(2).getCell(0).getRichStringCellValue().getString());
assertEquals("yyyy-mm-dd", wb2.getSheetAt(0).getRow(3).getCell(0).getRichStringCellValue().getString());
@@ -199,14 +194,14 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook {
assertNotNull(wb2.getSharedStringSource());
assertNotNull(wb2.getStylesSource());
}
public void testStyles() {
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("Formatting.xlsx");
StylesTable ss = workbook.getStylesSource();
assertNotNull(ss);
StylesTable st = ss;
// Has 8 number formats
assertEquals(8, st._getNumberFormatSize());
// Has 2 fonts
@@ -215,20 +210,20 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook {
assertEquals(2, st.getFills().size());
// Has 1 border
assertEquals(1, st.getBorders().size());
// Add two more styles
assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8,
assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8,
st.putNumberFormat("testFORMAT"));
assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8,
assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 8,
st.putNumberFormat("testFORMAT"));
assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 9,
assertEquals(StylesTable.FIRST_CUSTOM_STYLE_ID + 9,
st.putNumberFormat("testFORMAT2"));
assertEquals(10, st._getNumberFormatSize());
// Save, load back in again, and check
workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
ss = workbook.getStylesSource();
assertNotNull(ss);

@@ -238,77 +233,77 @@ public final class TestXSSFWorkbook extends BaseTestWorkbook {
assertEquals(1, st.getBorders().size());
}

public void testIncrementSheetId() throws Exception {
XSSFWorkbook wb = getTestDataProvider().createWorkbook();
int sheetId = (int)wb.createSheet().sheet.getSheetId();
assertEquals(1, sheetId);
sheetId = (int)wb.createSheet().sheet.getSheetId();
assertEquals(2, sheetId);
//test file with gaps in the sheetId sequence
wb = getTestDataProvider().openSampleWorkbook("47089.xlsm");
int lastSheetId = (int)wb.getSheetAt(wb.getNumberOfSheets() - 1).sheet.getSheetId();
sheetId = (int)wb.createSheet().sheet.getSheetId();
assertEquals(lastSheetId+1, sheetId);
}
/**
* Test setting of core properties such as Title and Author
*/
public void testWorkbookProperties() throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook();
POIXMLProperties props = workbook.getProperties();
assertNotNull(props);
//the Application property must be set for new workbooks, see Bugzilla #47559
assertEquals("Apache POI", props.getExtendedProperties().getUnderlyingProperties().getApplication());
PackagePropertiesPart opcProps = props.getCoreProperties().getUnderlyingProperties();
assertNotNull(opcProps);
opcProps.setTitleProperty("Testing Bugzilla #47460");
assertEquals("Apache POI", opcProps.getCreatorProperty().getValue());
opcProps.setCreatorProperty("poi-dev@poi.apache.org");
workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
assertEquals("Apache POI", workbook.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication());
opcProps = workbook.getProperties().getCoreProperties().getUnderlyingProperties();
assertEquals("Testing Bugzilla #47460", opcProps.getTitleProperty().getValue());
assertEquals("poi-dev@poi.apache.org", opcProps.getCreatorProperty().getValue());
}
/**
* Verify that the attached test data was not modified. If this test method
* fails, the test data is not working properly.
*/
public void test47668() throws Exception {
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("47668.xlsx");
List<XSSFPictureData> allPictures = workbook.getAllPictures();
assertEquals(2, allPictures.size());
PackagePartName imagePartName = PackagingURIHelper
.createPartName("/xl/media/image1.jpeg");
PackagePart imagePart = workbook.getPackage().getPart(imagePartName);
assertNotNull(imagePart);
for (XSSFPictureData pictureData : allPictures) {
PackagePart picturePart = pictureData.getPackagePart();
assertSame(imagePart, picturePart);
}
XSSFSheet sheet0 = workbook.getSheetAt(0);
XSSFDrawing drawing0 = sheet0.createDrawingPatriarch();
XSSFPictureData pictureData0 = (XSSFPictureData) drawing0.getRelations().get(0);
byte[] data0 = pictureData0.getData();
CRC32 crc0 = new CRC32();
crc0.update(data0);
XSSFSheet sheet1 = workbook.getSheetAt(1);
XSSFDrawing drawing1 = sheet1.createDrawingPatriarch();
XSSFPictureData pictureData1 = (XSSFPictureData) drawing1.getRelations().get(0);
byte[] data1 = pictureData1.getData();
CRC32 crc1 = new CRC32();
crc1.update(data1);
assertEquals(crc0.getValue(), crc1.getValue());
}
public void testIncrementSheetId() {
XSSFWorkbook wb = getTestDataProvider().createWorkbook();
int sheetId = (int)wb.createSheet().sheet.getSheetId();
assertEquals(1, sheetId);
sheetId = (int)wb.createSheet().sheet.getSheetId();
assertEquals(2, sheetId);
//test file with gaps in the sheetId sequence
wb = getTestDataProvider().openSampleWorkbook("47089.xlsm");
int lastSheetId = (int)wb.getSheetAt(wb.getNumberOfSheets() - 1).sheet.getSheetId();
sheetId = (int)wb.createSheet().sheet.getSheetId();
assertEquals(lastSheetId+1, sheetId);
}
/**
* Test setting of core properties such as Title and Author
*/
public void testWorkbookProperties() {
XSSFWorkbook workbook = new XSSFWorkbook();
POIXMLProperties props = workbook.getProperties();
assertNotNull(props);
//the Application property must be set for new workbooks, see Bugzilla #47559
assertEquals("Apache POI", props.getExtendedProperties().getUnderlyingProperties().getApplication());
PackagePropertiesPart opcProps = props.getCoreProperties().getUnderlyingProperties();
assertNotNull(opcProps);
opcProps.setTitleProperty("Testing Bugzilla #47460");
assertEquals("Apache POI", opcProps.getCreatorProperty().getValue());
opcProps.setCreatorProperty("poi-dev@poi.apache.org");
workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook);
assertEquals("Apache POI", workbook.getProperties().getExtendedProperties().getUnderlyingProperties().getApplication());
opcProps = workbook.getProperties().getCoreProperties().getUnderlyingProperties();
assertEquals("Testing Bugzilla #47460", opcProps.getTitleProperty().getValue());
assertEquals("poi-dev@poi.apache.org", opcProps.getCreatorProperty().getValue());
}
/**
* Verify that the attached test data was not modified. If this test method
* fails, the test data is not working properly.
*/
public void test47668() throws Exception {
XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("47668.xlsx");
List<XSSFPictureData> allPictures = workbook.getAllPictures();
assertEquals(2, allPictures.size());
PackagePartName imagePartName = PackagingURIHelper
.createPartName("/xl/media/image1.jpeg");
PackagePart imagePart = workbook.getPackage().getPart(imagePartName);
assertNotNull(imagePart);
for (XSSFPictureData pictureData : allPictures) {
PackagePart picturePart = pictureData.getPackagePart();
assertSame(imagePart, picturePart);
}
XSSFSheet sheet0 = workbook.getSheetAt(0);
XSSFDrawing drawing0 = sheet0.createDrawingPatriarch();
XSSFPictureData pictureData0 = (XSSFPictureData) drawing0.getRelations().get(0);
byte[] data0 = pictureData0.getData();
CRC32 crc0 = new CRC32();
crc0.update(data0);
XSSFSheet sheet1 = workbook.getSheetAt(1);
XSSFDrawing drawing1 = sheet1.createDrawingPatriarch();
XSSFPictureData pictureData1 = (XSSFPictureData) drawing1.getRelations().get(0);
byte[] data1 = pictureData1.getData();
CRC32 crc1 = new CRC32();
crc1.update(data1);
assertEquals(crc0.getValue(), crc1.getValue());
}
}

+ 3
- 5
src/ooxml/testcases/org/apache/poi/xssf/util/TestCTColComparator.java ファイルの表示

@@ -22,11 +22,10 @@ import java.util.Arrays;
import junit.framework.TestCase;

import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;


public class TestCTColComparator extends TestCase {
public final class TestCTColComparator extends TestCase {
public void testCompare() {
CTColComparator comparator = new CTColComparator();
CTCol o1 = CTCol.Factory.newInstance();
@@ -44,7 +43,7 @@ public class TestCTColComparator extends TestCase {
o4.setMax(80);
assertEquals(-1, comparator.compare(o3, o4));
}
public void testArraysSort() {
CTColComparator comparator = new CTColComparator();
CTCol o1 = CTCol.Factory.newInstance();
@@ -73,5 +72,4 @@ public class TestCTColComparator extends TestCase {
assertEquals(8, cols[1].getMax());
assertEquals(80, cols[2].getMax());
}
}

+ 20
- 25
src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFParagraph.java ファイルの表示

@@ -21,7 +21,7 @@ import java.math.BigInteger;

import junit.framework.TestCase;

import org.openxmlformats.schemas.officeDocument.x2006.math.STSpacingRule;
import org.apache.poi.POIXMLDocument;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;
@@ -40,29 +40,27 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTextAlignment;
/**
* Tests for XWPF Paragraphs
*/
public class TestXWPFParagraph extends TestCase {
public final class TestXWPFParagraph extends TestCase {
/**
* A simple file
*/
private XWPFDocument xml;
private File file;
/*

protected void setUp() throws Exception {
super.setUp();

file = new File(
File file = new File(
System.getProperty("HWPF.testdata.path") +
File.separator + "ThreeColHead.docx"
);
assertTrue(file.exists());
xml = new XWPFDocument(POIXMLDocument.openPackage(file.toString()));
}
*/
/**
* Check that we get the right paragraph from the header
*/
/*
public void testHeaderParagraph() throws Exception {
public void disabled_testHeaderParagraph() {
XWPFHeader hdr = xml.getHeaderFooterPolicy().getDefaultHeader();
assertNotNull(hdr);

@@ -74,12 +72,11 @@ public class TestXWPFParagraph extends TestCase {
assertEquals("First header column!\tMid header\tRight header!", p
.getText());
}
*/
/**
* Check that we get the right paragraphs from the document
*/
/*
public void testDocumentParagraph() throws Exception {
public void disabled_testDocumentParagraph() {
XWPFParagraph[] ps = xml.getParagraphs();
assertEquals(10, ps.length);

@@ -100,23 +97,23 @@ public class TestXWPFParagraph extends TestCase {
assertFalse(ps[4].isEmpty());
assertEquals("More on page one", ps[4].getText());
}
*/
public void testSetGetBorderTop() {
//new clean instance of paragraph
XWPFDocument doc = new XWPFDocument();
XWPFParagraph p = doc.createParagraph();

assertEquals(STBorder.NONE.intValue(), p.getBorderTop().getValue());
CTP ctp = p.getCTP();
CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr();
//bordi
CTPBdr bdr = ppr.addNewPBdr();
CTBorder borderTop = bdr.addNewTop();
borderTop.setVal(STBorder.DOUBLE);
bdr.setTop(borderTop);
assertEquals(Borders.DOUBLE, p.getBorderTop());
p.setBorderTop(Borders.SINGLE);
assertEquals(STBorder.SINGLE, borderTop.getVal());
@@ -128,7 +125,7 @@ public class TestXWPFParagraph extends TestCase {
XWPFParagraph p = doc.createParagraph();

assertEquals(STJc.LEFT.intValue(), p.getAlignment().getValue());
CTP ctp = p.getCTP();
CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr();

@@ -140,7 +137,7 @@ public class TestXWPFParagraph extends TestCase {
assertEquals(STJc.BOTH, ppr.getJc().getVal());
}

public void testSetGetSpacing() {
XWPFDocument doc = new XWPFDocument();
XWPFParagraph p = doc.createParagraph();
@@ -149,7 +146,7 @@ public class TestXWPFParagraph extends TestCase {
CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr();

assertEquals(-1, p.getSpacingAfter());
CTSpacing spacing = ppr.addNewSpacing();
spacing.setAfter(new BigInteger("10"));
assertEquals(10, p.getSpacingAfter());
@@ -166,7 +163,7 @@ public class TestXWPFParagraph extends TestCase {
CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr();

assertEquals(STLineSpacingRule.INT_AUTO, p.getSpacingLineRule().getValue());
CTSpacing spacing = ppr.addNewSpacing();
spacing.setLineRule(STLineSpacingRule.AT_LEAST);
assertEquals(LineSpacingRule.AT_LEAST, p.getSpacingLineRule());
@@ -174,18 +171,18 @@ public class TestXWPFParagraph extends TestCase {
p.setSpacingAfter(100);
assertEquals(100, spacing.getAfter().intValue());
}
public void testSetGetIndentation() {
XWPFDocument doc = new XWPFDocument();
XWPFParagraph p = doc.createParagraph();

assertEquals(-1, p.getIndentationLeft());
CTP ctp = p.getCTP();
CTPPr ppr = ctp.getPPr()== null? ctp.addNewPPr() : ctp.getPPr();

assertEquals(-1, p.getIndentationLeft());
CTInd ind = ppr.addNewInd();
ind.setLeft(new BigInteger("10"));
assertEquals(10, p.getIndentationLeft());
@@ -193,7 +190,7 @@ public class TestXWPFParagraph extends TestCase {
p.setIndentationLeft(100);
assertEquals(100, ind.getLeft().intValue());
}
public void testSetGetVerticalAlignment() {
//new clean instance of paragraph
XWPFDocument doc = new XWPFDocument();
@@ -240,6 +237,4 @@ public class TestXWPFParagraph extends TestCase {
p.setPageBreak(true);
assertEquals(STOnOff.TRUE, ppr.getPageBreakBefore().getVal());
}


}

+ 1
- 5
src/scratchpad/src/org/apache/poi/hdf/extractor/StyleSheet.java ファイルの表示

@@ -17,16 +17,12 @@

package org.apache.poi.hdf.extractor;

import java.util.*;

/**
* Comment me
*
* @author Ryan Ackley
*/

public final class StyleSheet
{
public final class StyleSheet {

private static final int NIL_STYLE = 4095;
private static final int PAP_TYPE = 1;

+ 23
- 48
src/scratchpad/src/org/apache/poi/hdf/model/HDFObjectFactory.java ファイルの表示

@@ -17,37 +17,25 @@

package org.apache.poi.hdf.model;


//import java.io;

import java.util.ArrayList;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;


import org.apache.poi.hdf.model.hdftypes.*;
import org.apache.poi.hdf.event.HDFLowLevelParsingListener;
import org.apache.poi.hdf.model.util.BTreeSet;
import org.apache.poi.hdf.model.hdftypes.*;
import org.apache.poi.hdf.model.util.ParsingState;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.poifs.filesystem.POIFSDocument;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.LittleEndian;




/**
* The Object Factory takes in a stream and creates the low level objects
* that represent the data.
* @author andy
*/
public final class HDFObjectFactory
{
public final class HDFObjectFactory {

/** OLE stuff*/
private POIFSFileSystem _filesystem;
@@ -193,36 +181,26 @@ public final class HDFObjectFactory
{
throw new IOException("The text piece table is corrupted");
}
else
{
//parse out the text pieces
int pieceTableSize = LittleEndian.getInt(_tableBuffer, ++pos);
pos += 4;
int pieces = (pieceTableSize - 4) / 12;
for (int x = 0; x < pieces; x++)
{
int filePos = LittleEndian.getInt(_tableBuffer, pos + ((pieces + 1) * 4) + (x * 8) + 2);
boolean unicode = false;
if ((filePos & 0x40000000) == 0)
{
unicode = true;
}
else
{
unicode = false;
filePos &= ~(0x40000000);//gives me FC in doc stream
filePos /= 2;
}
int totLength = LittleEndian.getInt(_tableBuffer, pos + (x + 1) * 4) -
LittleEndian.getInt(_tableBuffer, pos + (x * 4));

TextPiece piece = new TextPiece(filePos, totLength, unicode);
_listener.text(piece);

//parse out the text pieces
int pieceTableSize = LittleEndian.getInt(_tableBuffer, ++pos);
pos += 4;
int pieces = (pieceTableSize - 4) / 12;
for (int x = 0; x < pieces; x++) {
int filePos = LittleEndian.getInt(_tableBuffer, pos + ((pieces + 1) * 4) + (x * 8) + 2);
boolean unicode = false;
if ((filePos & 0x40000000) == 0) {
unicode = true;
} else {
unicode = false;
filePos &= ~(0x40000000);//gives me FC in doc stream
filePos /= 2;
}
int totLength = LittleEndian.getInt(_tableBuffer, pos + (x + 1) * 4) -
LittleEndian.getInt(_tableBuffer, pos + (x * 4));

TextPiece piece = new TextPiece(filePos, totLength, unicode);
_listener.text(piece);
}

}
/**
* initializes all of the formatting properties for a Word Document
@@ -532,10 +510,7 @@ public final class HDFObjectFactory
{
break;
}
else
{
x++;
}
x++;
}
//do the header sections
for (; x < arraySize; x++)// && sectionEnd <= end; x++)

+ 0
- 3
src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/FileInformationBlock.java ファイルの表示

@@ -17,9 +17,6 @@

package org.apache.poi.hdf.model.hdftypes;

import org.apache.poi.util.BitField;
import org.apache.poi.util.LittleEndian;


import org.apache.poi.hdf.model.hdftypes.definitions.FIBAbstractType;


+ 1
- 4
src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/StyleSheet.java ファイルの表示

@@ -17,7 +17,6 @@

package org.apache.poi.hdf.model.hdftypes;

import java.util.*;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.hdf.model.hdftypes.definitions.TCAbstractType;

@@ -29,9 +28,7 @@ import org.apache.poi.hdf.model.hdftypes.definitions.TCAbstractType;
*
* @author Ryan Ackley
*/

public final class StyleSheet implements HDFType
{
public final class StyleSheet implements HDFType {

private static final int NIL_STYLE = 4095;
private static final int PAP_TYPE = 1;

+ 0
- 4
src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/CHPAbstractType.java ファイルの表示

@@ -18,12 +18,8 @@
package org.apache.poi.hdf.model.hdftypes.definitions;



import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.StringUtil;
import org.apache.poi.util.HexDump;
import org.apache.poi.hdf.model.hdftypes.HDFType;

/**

+ 0
- 1
src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/DOPAbstractType.java ファイルの表示

@@ -22,7 +22,6 @@ package org.apache.poi.hdf.model.hdftypes.definitions;
import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.StringUtil;
import org.apache.poi.util.HexDump;
import org.apache.poi.hdf.model.hdftypes.HDFType;


+ 0
- 2
src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/FIBAbstractType.java ファイルの表示

@@ -18,11 +18,9 @@
package org.apache.poi.hdf.model.hdftypes.definitions;



import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.StringUtil;
import org.apache.poi.util.HexDump;
import org.apache.poi.hdf.model.hdftypes.HDFType;


+ 0
- 4
src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/PAPAbstractType.java ファイルの表示

@@ -18,12 +18,8 @@
package org.apache.poi.hdf.model.hdftypes.definitions;



import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.StringUtil;
import org.apache.poi.util.HexDump;
import org.apache.poi.hdf.model.hdftypes.HDFType;

/**

+ 0
- 5
src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/SEPAbstractType.java ファイルの表示

@@ -18,11 +18,6 @@
package org.apache.poi.hdf.model.hdftypes.definitions;



import org.apache.poi.util.BitField;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.StringUtil;
import org.apache.poi.util.HexDump;
import org.apache.poi.hdf.model.hdftypes.HDFType;

/**

+ 0
- 6
src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TAPAbstractType.java ファイルの表示

@@ -17,12 +17,6 @@

package org.apache.poi.hdf.model.hdftypes.definitions;



import org.apache.poi.util.BitField;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.StringUtil;
import org.apache.poi.util.HexDump;
import org.apache.poi.hdf.model.hdftypes.HDFType;

/**

+ 0
- 5
src/scratchpad/src/org/apache/poi/hdf/model/hdftypes/definitions/TCAbstractType.java ファイルの表示

@@ -17,13 +17,8 @@

package org.apache.poi.hdf.model.hdftypes.definitions;



import org.apache.poi.util.BitField;
import org.apache.poi.util.BitFieldFactory;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.StringUtil;
import org.apache.poi.util.HexDump;
import org.apache.poi.hdf.model.hdftypes.HDFType;

/**

+ 3
- 4
src/scratchpad/src/org/apache/poi/hslf/EncryptedSlideShow.java ファイルの表示

@@ -26,9 +26,6 @@ import org.apache.poi.hslf.record.PersistPtrHolder;
import org.apache.poi.hslf.record.Record;
import org.apache.poi.hslf.record.UserEditAtom;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.DocumentInputStream;
import org.apache.poi.util.LittleEndian;

/**
* This class provides helper functions for determining if a
@@ -95,7 +92,9 @@ public final class EncryptedSlideShow
hss.getUnderlyingBytes(),
(int)cua.getCurrentEditOffset()
);
} catch(ArrayIndexOutOfBoundsException e) {}
} catch (ArrayIndexOutOfBoundsException e) {
return null;
}
if(r == null) { return null; }
if(! (r instanceof UserEditAtom)) { return null; }
UserEditAtom uea = (UserEditAtom)r;

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/blip/EMF.java ファイルの表示

@@ -26,7 +26,6 @@ import java.io.InputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.zip.InflaterInputStream;
import java.util.zip.DeflaterOutputStream;

/**
* Represents EMF (Windows Enhanced Metafile) picture data.

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/blip/Metafile.java ファイルの表示

@@ -23,7 +23,6 @@ import org.apache.poi.hslf.usermodel.PictureData;
import java.awt.*;
import java.io.*;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.InflaterInputStream;

/**
* Represents a metafile picture which can be one of the following types: EMF, WMF, or PICT.

+ 6
- 6
src/scratchpad/src/org/apache/poi/hslf/blip/PICT.java ファイルの表示

@@ -17,14 +17,14 @@

package org.apache.poi.hslf.blip;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.InflaterInputStream;

import org.apache.poi.hslf.exceptions.HSLFException;
import org.apache.poi.hslf.model.Picture;
import org.apache.poi.hslf.model.Shape;
import org.apache.poi.hslf.exceptions.HSLFException;
import org.apache.poi.util.LittleEndian;

import java.io.*;
import java.util.zip.InflaterInputStream;
import java.util.zip.DeflaterOutputStream;

/**
* Represents Macintosh PICT picture data.

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/blip/WMF.java ファイルの表示

@@ -25,7 +25,6 @@ import org.apache.poi.hslf.exceptions.HSLFException;

import java.io.*;
import java.util.zip.InflaterInputStream;
import java.util.zip.DeflaterOutputStream;

/**
* Represents a WMF (Windows Metafile) picture data.

+ 0
- 2
src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowDumper.java ファイルの表示

@@ -17,11 +17,9 @@

package org.apache.poi.hslf.dev;

import java.util.*;
import java.io.*;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.poifs.filesystem.POIFSDocument;
import org.apache.poi.poifs.filesystem.DocumentEntry;

import org.apache.poi.ddf.*;

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java ファイルの表示

@@ -33,7 +33,6 @@ import org.apache.poi.hslf.record.EscherTextboxWrapper;
import org.apache.poi.hslf.record.TextCharsAtom;
import org.apache.poi.hslf.record.TextBytesAtom;
import org.apache.poi.hslf.record.StyleTextPropAtom;
import org.apache.poi.hslf.record.Record;

/**
* This class provides a way to view the contents of a powerpoint file.

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/dev/TextStyleListing.java ファイルの表示

@@ -22,7 +22,6 @@ import org.apache.poi.hslf.model.textproperties.BitMaskTextProp;
import org.apache.poi.hslf.model.textproperties.TextProp;
import org.apache.poi.hslf.model.textproperties.TextPropCollection;
import org.apache.poi.hslf.record.*;
import org.apache.poi.hslf.record.StyleTextPropAtom.*;

import java.util.LinkedList;


+ 4
- 9
src/scratchpad/src/org/apache/poi/hslf/dev/UserEditAndPersistListing.java ファイルの表示

@@ -17,18 +17,13 @@

package org.apache.poi.hslf.dev;

import org.apache.poi.hslf.*;
import org.apache.poi.hslf.record.*;
import java.io.ByteArrayOutputStream;
import java.util.Hashtable;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.poifs.filesystem.POIFSDocument;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.DocumentInputStream;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.record.*;
import org.apache.poi.util.LittleEndian;

import java.io.*;
import java.util.Hashtable;

/**
* Uses record level code to locate UserEditAtom records, and other
* persistence related atoms. Tries to match them together, to help

+ 0
- 2
src/scratchpad/src/org/apache/poi/hslf/extractor/QuickButCruddyTextExtractor.java ファイルの表示

@@ -21,9 +21,7 @@ import java.io.*;
import java.util.Vector;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.poifs.filesystem.POIFSDocument;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.DocumentInputStream;
import org.apache.poi.util.LittleEndian;

import org.apache.poi.hslf.record.CString;

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/model/Freeform.java ファイルの表示

@@ -20,7 +20,6 @@ package org.apache.poi.hslf.model;
import org.apache.poi.ddf.*;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.POILogger;
import org.apache.poi.util.HexDump;

import java.awt.geom.*;
import java.util.ArrayList;

+ 0
- 4
src/scratchpad/src/org/apache/poi/hslf/model/MasterSheet.java ファイルの表示

@@ -18,9 +18,6 @@
package org.apache.poi.hslf.model;

import org.apache.poi.hslf.record.SheetContainer;
import org.apache.poi.hslf.record.Record;
import org.apache.poi.hslf.record.RecordTypes;
import org.apache.poi.hslf.record.OEPlaceholderAtom;
import org.apache.poi.hslf.model.textproperties.TextProp;

/**
@@ -55,5 +52,4 @@ public abstract class MasterSheet extends Sheet {
TextShape tx = (TextShape)shape;
return tx.getPlaceholderAtom() != null;
}

}

+ 0
- 2
src/scratchpad/src/org/apache/poi/hslf/model/Picture.java ファイルの表示

@@ -28,13 +28,11 @@ import org.apache.poi.util.POILogger;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.geom.AffineTransform;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Arrays;


/**

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/model/Placeholder.java ファイルの表示

@@ -21,7 +21,6 @@ import org.apache.poi.ddf.*;
import org.apache.poi.hslf.record.OEPlaceholderAtom;
import org.apache.poi.hslf.exceptions.HSLFException;

import java.util.List;
import java.io.ByteArrayOutputStream;

/**

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/model/Shape.java ファイルの表示

@@ -19,7 +19,6 @@ package org.apache.poi.hslf.model;

import org.apache.poi.ddf.*;
import org.apache.poi.hslf.record.ColorSchemeAtom;
import org.apache.poi.hslf.record.PPDrawing;
import org.apache.poi.util.POILogger;
import org.apache.poi.util.POILogFactory;


+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/model/Sheet.java ファイルの表示

@@ -20,7 +20,6 @@ package org.apache.poi.hslf.model;
import org.apache.poi.ddf.*;
import org.apache.poi.hslf.record.*;
import org.apache.poi.hslf.usermodel.SlideShow;
import org.apache.poi.util.POILogger;

import java.util.ArrayList;
import java.util.Iterator;

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/model/TableCell.java ファイルの表示

@@ -18,7 +18,6 @@
package org.apache.poi.hslf.model;

import org.apache.poi.ddf.*;
import org.apache.poi.hslf.record.TextHeaderAtom;

import java.awt.*;


+ 16
- 14
src/scratchpad/src/org/apache/poi/hslf/model/TextPainter.java ファイルの表示

@@ -17,22 +17,24 @@

package org.apache.poi.hslf.model;

import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.record.TextRulerAtom;
import org.apache.poi.util.POILogger;
import org.apache.poi.util.POILogFactory;

import java.text.AttributedString;
import java.text.AttributedCharacterIterator;
import java.text.BreakIterator;
import java.awt.font.TextAttribute;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.font.LineBreakMeasurer;
import java.awt.font.TextAttribute;
import java.awt.font.TextLayout;
import java.awt.font.FontRenderContext;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.hslf.record.TextRulerAtom;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;

/**
* Paint text into java.awt.Graphics2D
@@ -162,7 +164,7 @@ public final class TextPainter {
int paragraphStart = it.getBeginIndex();
int paragraphEnd = it.getEndIndex();

ArrayList lines = new ArrayList();
List<TextElement> lines = new ArrayList<TextElement>();
LineBreakMeasurer measurer = new LineBreakMeasurer(it, frc);
measurer.setPosition(paragraphStart);
while (measurer.getPosition() < paragraphEnd) {
@@ -296,7 +298,7 @@ public final class TextPainter {

//finally draw the text fragments
TextElement[] elems = new TextElement[lines.size()];
return (TextElement[])lines.toArray(elems);
return lines.toArray(elems);
}

public static class TextElement {

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/model/TextRun.java ファイルの表示

@@ -19,7 +19,6 @@ package org.apache.poi.hslf.model;

import java.util.LinkedList;
import java.util.Vector;
import java.util.List;

import org.apache.poi.hslf.model.textproperties.TextPropCollection;
import org.apache.poi.hslf.record.*;

+ 11
- 13
src/scratchpad/src/org/apache/poi/hslf/model/TextShape.java ファイルの表示

@@ -1,4 +1,3 @@

/* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -30,7 +29,6 @@ import java.awt.geom.AffineTransform;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.io.IOException;
import java.util.Iterator;

/**
* A common superclass of all shapes that can hold text.
@@ -88,7 +86,7 @@ public abstract class TextShape extends SimpleShape {

/**
* Create a TextBox object and initialize it from the supplied Record container.
*
*
* @param escherRecord <code>EscherSpContainer</code> container which holds information about this shape
* @param parent the parent of the shape
*/
@@ -230,23 +228,23 @@ public abstract class TextShape extends SimpleShape {
String fntname = rt.getFontName();
Font font = new Font(fntname, style, size);

float width = 0, height = 0, leading = 0;
String[] lines = txt.split("\n");
float width = 0, height = 0, leading = 0;
String[] lines = txt.split("\n");
for (int i = 0; i < lines.length; i++) {
if(lines[i].length() == 0) continue;
TextLayout layout = new TextLayout(lines[i], font, _frc);
leading = Math.max(leading, layout.getLeading());
leading = Math.max(leading, layout.getLeading());
width = Math.max(width, layout.getAdvance());
height = Math.max(height, (height + (layout.getDescent() + layout.getAscent())));
}
}
// add one character to width
Rectangle2D charBounds = font.getMaxCharBounds(_frc);
Rectangle2D charBounds = font.getMaxCharBounds(_frc);
width += getMarginLeft() + getMarginRight() + charBounds.getWidth();
// add leading to height
// add leading to height
height += getMarginTop() + getMarginBottom() + leading;

Rectangle2D anchor = getAnchor2D();

+ 1
- 4
src/scratchpad/src/org/apache/poi/hslf/record/AnimationInfoAtom.java ファイルの表示

@@ -19,9 +19,7 @@ package org.apache.poi.hslf.record;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;

import org.apache.poi.hslf.util.SystemTimeUtils;
import org.apache.poi.util.LittleEndian;

/**
@@ -29,8 +27,7 @@ import org.apache.poi.util.LittleEndian;
*
* @author Yegor Kozlov
*/
public final class AnimationInfoAtom extends RecordAtom
{
public final class AnimationInfoAtom extends RecordAtom {

/**
* whether the animation plays in the reverse direction

+ 1
- 4
src/scratchpad/src/org/apache/poi/hslf/record/DocumentEncryptionAtom.java ファイルの表示

@@ -17,7 +17,6 @@

package org.apache.poi.hslf.record;

import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.StringUtil;

import java.io.IOException;
@@ -29,9 +28,7 @@ import java.io.OutputStream;
*
* @author Nick Burch
*/

public final class DocumentEncryptionAtom extends RecordAtom
{
public final class DocumentEncryptionAtom extends RecordAtom {
private byte[] _header;
private static long _type = 12052l;


+ 0
- 6
src/scratchpad/src/org/apache/poi/hslf/record/ExAviMovie.java ファイルの表示

@@ -17,11 +17,6 @@

package org.apache.poi.hslf.record;

import java.io.IOException;
import java.io.OutputStream;

import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.POILogger;

/**
* A container record that specifies information about a movie stored externally.
@@ -50,5 +45,4 @@ public final class ExAviMovie extends ExMCIMovie {
public long getRecordType() {
return RecordTypes.ExAviMovie.typeID;
}

}

+ 0
- 5
src/scratchpad/src/org/apache/poi/hslf/record/ExControl.java ファイルの表示

@@ -17,11 +17,6 @@

package org.apache.poi.hslf.record;

import java.io.OutputStream;
import java.io.IOException;

import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.POILogger;

/**
* A container record that specifies information about an ActiveX control. It contains:

+ 5
- 10
src/scratchpad/src/org/apache/poi/hslf/record/ExHyperlinkAtom.java ファイルの表示

@@ -14,15 +14,12 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.hslf.record;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;

import org.apache.poi.hslf.util.SystemTimeUtils;
import org.apache.poi.util.LittleEndian;

/**
@@ -31,9 +28,7 @@ import org.apache.poi.util.LittleEndian;
*
* @author Nick Burch
*/

public class ExHyperlinkAtom extends RecordAtom
{
public final class ExHyperlinkAtom extends RecordAtom {
/**
* Record header.
*/
@@ -53,7 +48,7 @@ public class ExHyperlinkAtom extends RecordAtom

LittleEndian.putShort(_header, 2, (short)getRecordType());
LittleEndian.putInt(_header, 4, _data.length);
// It is fine for the other values to be zero
}

@@ -69,11 +64,11 @@ public class ExHyperlinkAtom extends RecordAtom
// Get the header.
_header = new byte[8];
System.arraycopy(source,start,_header,0,8);
// Get the record data.
_data = new byte[len-8];
System.arraycopy(source,start+8,_data,0,len-8);
// Must be at least 4 bytes long
if(_data.length < 4) {
throw new IllegalArgumentException("The length of the data for a ExHyperlinkAtom must be at least 4 bytes, but was only " + _data.length);
@@ -96,7 +91,7 @@ public class ExHyperlinkAtom extends RecordAtom
public void setNumber(int number) {
LittleEndian.putInt(_data,0,number);
}
/**
* Gets the record type.
* @return the record type.

+ 0
- 2
src/scratchpad/src/org/apache/poi/hslf/record/ExMediaAtom.java ファイルの表示

@@ -19,9 +19,7 @@ package org.apache.poi.hslf.record;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;

import org.apache.poi.hslf.util.SystemTimeUtils;
import org.apache.poi.util.LittleEndian;

/**

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/record/FontEntityAtom.java ファイルの表示

@@ -18,7 +18,6 @@
package org.apache.poi.hslf.record;

import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.StringUtil;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;

+ 6
- 11
src/scratchpad/src/org/apache/poi/hslf/record/InteractiveInfoAtom.java ファイルの表示

@@ -14,15 +14,12 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */

package org.apache.poi.hslf.record;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;

import org.apache.poi.hslf.util.SystemTimeUtils;
import org.apache.poi.util.LittleEndian;

/**
@@ -32,9 +29,7 @@ import org.apache.poi.util.LittleEndian;
* @author Nick Burch
* @author Yegor Kozlov
*/

public class InteractiveInfoAtom extends RecordAtom
{
public class InteractiveInfoAtom extends RecordAtom {

/**
* Action Table
@@ -92,7 +87,7 @@ public class InteractiveInfoAtom extends RecordAtom

LittleEndian.putShort(_header, 2, (short)getRecordType());
LittleEndian.putInt(_header, 4, _data.length);
// It is fine for the other values to be zero
}

@@ -108,16 +103,16 @@ public class InteractiveInfoAtom extends RecordAtom
// Get the header.
_header = new byte[8];
System.arraycopy(source,start,_header,0,8);
// Get the record data.
_data = new byte[len-8];
System.arraycopy(source,start+8,_data,0,len-8);
// Must be at least 16 bytes long
if(_data.length < 16) {
throw new IllegalArgumentException("The length of the data for a InteractiveInfoAtom must be at least 16 bytes, but was only " + _data.length);
}
// First 4 bytes - no idea, normally 0
// Second 4 bytes - the id of the link (from 1 onwards)
// Third 4 bytes - no idea, normally 4
@@ -141,7 +136,7 @@ public class InteractiveInfoAtom extends RecordAtom
public void setHyperlinkID(int number) {
LittleEndian.putInt(_data,4,number);
}
/**
* a reference to a sound in the sound collection.
*/

+ 20
- 25
src/scratchpad/src/org/apache/poi/hslf/record/MainMaster.java ファイルの表示

@@ -21,25 +21,21 @@ import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;

import org.apache.poi.util.LittleEndian;

/**
* Master slide
*
* @author Yegor Kozlov
*/

public final class MainMaster extends SheetContainer
{
public final class MainMaster extends SheetContainer {
private byte[] _header;
private static long _type = 1016;

// Links to our more interesting children
private SlideAtom slideAtom;
private PPDrawing ppDrawing;
private TxMasterStyleAtom[] txmasters;
private ColorSchemeAtom[] clrscheme;
private ColorSchemeAtom _colorScheme;
private TxMasterStyleAtom[] txmasters;
private ColorSchemeAtom[] clrscheme;
private ColorSchemeAtom _colorScheme;

/**
* Returns the SlideAtom of this Slide
@@ -52,9 +48,9 @@ public final class MainMaster extends SheetContainer
*/
public PPDrawing getPPDrawing() { return ppDrawing; }

public TxMasterStyleAtom[] getTxMasterStyleAtoms() { return txmasters; }
public TxMasterStyleAtom[] getTxMasterStyleAtoms() { return txmasters; }

public ColorSchemeAtom[] getColorSchemeAtoms() { return clrscheme; }
public ColorSchemeAtom[] getColorSchemeAtoms() { return clrscheme; }

/**
* Set things up, and find our more interesting children
@@ -67,27 +63,27 @@ public final class MainMaster extends SheetContainer
// Find our children
_children = Record.findChildRecords(source,start+8,len-8);

ArrayList tx = new ArrayList();
ArrayList clr = new ArrayList();
ArrayList tx = new ArrayList();
ArrayList clr = new ArrayList();
// Find the interesting ones in there
for(int i=0; i<_children.length; i++) {
if(_children[i] instanceof SlideAtom) {
slideAtom = (SlideAtom)_children[i];
} else if(_children[i] instanceof PPDrawing) {
ppDrawing = (PPDrawing)_children[i];
} else if(_children[i] instanceof TxMasterStyleAtom) {
tx.add(_children[i]);
} else if(_children[i] instanceof ColorSchemeAtom) {
clr.add(_children[i]);
} else if(_children[i] instanceof TxMasterStyleAtom) {
tx.add(_children[i]);
} else if(_children[i] instanceof ColorSchemeAtom) {
clr.add(_children[i]);
}

if(ppDrawing != null && _children[i] instanceof ColorSchemeAtom) {
_colorScheme = (ColorSchemeAtom)_children[i];
}
if(ppDrawing != null && _children[i] instanceof ColorSchemeAtom) {
_colorScheme = (ColorSchemeAtom)_children[i];
}

}
txmasters = (TxMasterStyleAtom[])tx.toArray(new TxMasterStyleAtom[tx.size()]);
clrscheme = (ColorSchemeAtom[])clr.toArray(new ColorSchemeAtom[clr.size()]);
txmasters = (TxMasterStyleAtom[])tx.toArray(new TxMasterStyleAtom[tx.size()]);
clrscheme = (ColorSchemeAtom[])clr.toArray(new ColorSchemeAtom[clr.size()]);
}

/**
@@ -103,8 +99,7 @@ public final class MainMaster extends SheetContainer
writeOut(_header[0],_header[1],_type,_children,out);
}

public ColorSchemeAtom getColorScheme(){
return _colorScheme;
}

public ColorSchemeAtom getColorScheme(){
return _colorScheme;
}
}

+ 0
- 2
src/scratchpad/src/org/apache/poi/hslf/record/OEShapeAtom.java ファイルの表示

@@ -19,9 +19,7 @@ package org.apache.poi.hslf.record;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;

import org.apache.poi.hslf.util.SystemTimeUtils;
import org.apache.poi.util.LittleEndian;

/**

+ 40
- 43
src/scratchpad/src/org/apache/poi/hslf/record/PPDrawing.java ファイルの表示

@@ -22,7 +22,6 @@ import org.apache.poi.util.POILogger;

import org.apache.poi.ddf.*;
import org.apache.poi.hslf.model.ShapeTypes;
import org.apache.poi.hslf.model.Shape;

import java.io.IOException;
import java.io.OutputStream;
@@ -44,16 +43,15 @@ import java.util.Iterator;

// For now, pretending to be an atom. Might not always be, but that
// would require a wrapping class
public final class PPDrawing extends RecordAtom
{
public final class PPDrawing extends RecordAtom {
private byte[] _header;
private long _type;

private EscherRecord[] childRecords;
private EscherTextboxWrapper[] textboxWrappers;

//cached EscherDgRecord
private EscherDgRecord dg;
//cached EscherDgRecord
private EscherDgRecord dg;

/**
* Get access to the underlying Escher Records
@@ -110,7 +108,7 @@ public final class PPDrawing extends RecordAtom
public PPDrawing(){
_header = new byte[8];
LittleEndian.putUShort(_header, 0, 15);
LittleEndian.putUShort(_header, 2, (int)RecordTypes.PPDrawing.typeID);
LittleEndian.putUShort(_header, 2, RecordTypes.PPDrawing.typeID);
LittleEndian.putInt(_header, 4, 0);

textboxWrappers = new EscherTextboxWrapper[]{};
@@ -122,7 +120,7 @@ public final class PPDrawing extends RecordAtom
*/
private void findEscherChildren(DefaultEscherRecordFactory erf, byte[] source, int startPos, int lenToGo, Vector found) {

int escherBytes = LittleEndian.getInt( source, startPos + 4 ) + 8;
int escherBytes = LittleEndian.getInt( source, startPos + 4 ) + 8;

// Find the record
EscherRecord r = erf.createRecord(source,startPos);
@@ -137,16 +135,16 @@ public final class PPDrawing extends RecordAtom
logger.log(POILogger.WARN, "Hit short DDF record at " + startPos + " - " + size);
}

/**
* Sanity check. Always advance the cursor by the correct value.
*
* getRecordSize() must return exatcly the same number of bytes that was written in fillFields.
* Sometimes it is not so, see an example in bug #44770. Most likely reason is that one of ddf records calculates wrong size.
*/
if(size != escherBytes){
logger.log(POILogger.WARN, "Record length=" + escherBytes + " but getRecordSize() returned " + r.getRecordSize() + "; record: " + r.getClass());
size = escherBytes;
}
/**
* Sanity check. Always advance the cursor by the correct value.
*
* getRecordSize() must return exatcly the same number of bytes that was written in fillFields.
* Sometimes it is not so, see an example in bug #44770. Most likely reason is that one of ddf records calculates wrong size.
*/
if(size != escherBytes){
logger.log(POILogger.WARN, "Record length=" + escherBytes + " but getRecordSize() returned " + r.getRecordSize() + "; record: " + r.getClass());
size = escherBytes;
}
startPos += size;
lenToGo -= size;
if(lenToGo >= 8) {
@@ -163,13 +161,13 @@ public final class PPDrawing extends RecordAtom
EscherTextboxRecord tbr = (EscherTextboxRecord)toSearch[i];
EscherTextboxWrapper w = new EscherTextboxWrapper(tbr);
found.add(w);
for (int j = i; j >= 0; j--) {
if(toSearch[j] instanceof EscherSpRecord){
EscherSpRecord sp = (EscherSpRecord)toSearch[j];
w.setShapeId(sp.getShapeId());
break;
}
}
for (int j = i; j >= 0; j--) {
if(toSearch[j] instanceof EscherSpRecord){
EscherSpRecord sp = (EscherSpRecord)toSearch[j];
w.setShapeId(sp.getShapeId());
break;
}
}
} else {
// If it has children, walk them
if(toSearch[i].isContainerRecord()) {
@@ -297,23 +295,22 @@ public final class PPDrawing extends RecordAtom
textboxWrappers = tw;
}

/**
* Return EscherDgRecord which keeps track of the number of shapes and shapeId in this drawing group
*
* @return EscherDgRecord
*/
public EscherDgRecord getEscherDgRecord(){
if(dg == null){
EscherContainerRecord dgContainer = (EscherContainerRecord)childRecords[0];
for(Iterator<EscherRecord> it = dgContainer.getChildIterator(); it.hasNext();){
EscherRecord r = it.next();
if(r instanceof EscherDgRecord){
dg = (EscherDgRecord)r;
break;
}
}
}
return dg;
}

/**
* Return EscherDgRecord which keeps track of the number of shapes and shapeId in this drawing group
*
* @return EscherDgRecord
*/
public EscherDgRecord getEscherDgRecord(){
if(dg == null){
EscherContainerRecord dgContainer = (EscherContainerRecord)childRecords[0];
for(Iterator<EscherRecord> it = dgContainer.getChildIterator(); it.hasNext();){
EscherRecord r = it.next();
if(r instanceof EscherDgRecord){
dg = (EscherDgRecord)r;
break;
}
}
}
return dg;
}
}

+ 0
- 1
src/scratchpad/src/org/apache/poi/hslf/record/PPDrawingGroup.java ファイルの表示

@@ -23,7 +23,6 @@ import org.apache.poi.util.LittleEndian;
import java.io.OutputStream;
import java.io.IOException;
import java.io.ByteArrayOutputStream;
import java.util.List;
import java.util.Iterator;

/**

+ 1
- 7
src/scratchpad/src/org/apache/poi/hslf/record/RoundTripHFPlaceholder12.java ファイルの表示

@@ -19,10 +19,6 @@ package org.apache.poi.hslf.record;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;

import org.apache.poi.hslf.util.SystemTimeUtils;
import org.apache.poi.util.LittleEndian;

/**
* An atom record that specifies that a shape is a header or footer placeholder shape
@@ -30,9 +26,7 @@ import org.apache.poi.util.LittleEndian;
* @since PowerPoint 2007
* @author Yegor Kozlov
*/

public final class RoundTripHFPlaceholder12 extends RecordAtom
{
public final class RoundTripHFPlaceholder12 extends RecordAtom {
/**
* Record header.
*/

+ 30
- 32
src/scratchpad/src/org/apache/poi/hslf/record/SlideListWithText.java ファイルの表示

@@ -17,7 +17,6 @@

package org.apache.poi.hslf.record;

import org.apache.poi.util.ArrayUtil;
import org.apache.poi.util.LittleEndian;

import java.io.IOException;
@@ -46,26 +45,25 @@ import java.util.Vector;
*/

// For now, pretend to be an atom
public final class SlideListWithText extends RecordContainer
{

/**
* Instance filed of the record header indicates that this SlideListWithText stores
* references to slides
*/
public static final int SLIDES = 0;
/**
* Instance filed of the record header indicates that this SlideListWithText stores
* references to master slides
*/
public static final int MASTER = 1;
/**
* Instance filed of the record header indicates that this SlideListWithText stores
* references to notes
*/
public static final int NOTES = 2;

private byte[] _header;
public final class SlideListWithText extends RecordContainer {

/**
* Instance filed of the record header indicates that this SlideListWithText stores
* references to slides
*/
public static final int SLIDES = 0;
/**
* Instance filed of the record header indicates that this SlideListWithText stores
* references to master slides
*/
public static final int MASTER = 1;
/**
* Instance filed of the record header indicates that this SlideListWithText stores
* references to notes
*/
public static final int NOTES = 2;

private byte[] _header;
private static long _type = 4080;

private SlideAtomsSet[] slideAtomsSets;
@@ -148,23 +146,23 @@ public final class SlideListWithText extends RecordContainer
slideAtomsSets = sas;
}

public int getInstance(){
return LittleEndian.getShort(_header, 0) >> 4;
}
public int getInstance(){
return LittleEndian.getShort(_header, 0) >> 4;
}

public void setInstance(int inst){
LittleEndian.putShort(_header, (short)((inst << 4) | 0xF));
}
public void setInstance(int inst){
LittleEndian.putShort(_header, (short)((inst << 4) | 0xF));
}

/**
/**
* Get access to the SlideAtomsSets of the children of this record
*/
public SlideAtomsSet[] getSlideAtomsSets() { return slideAtomsSets; }

/**
* Get access to the SlideAtomsSets of the children of this record
*/
public void setSlideAtomsSets( SlideAtomsSet[] sas ) { slideAtomsSets = sas; }
/**
* Get access to the SlideAtomsSets of the children of this record
*/
public void setSlideAtomsSets( SlideAtomsSet[] sas ) { slideAtomsSets = sas; }

/**
* Return the value we were given at creation

+ 0
- 2
src/scratchpad/src/org/apache/poi/hslf/record/SoundCollection.java ファイルの表示

@@ -17,8 +17,6 @@

package org.apache.poi.hslf.record;

import org.apache.poi.util.POILogger;

import java.io.OutputStream;
import java.io.IOException;


+ 0
- 3
src/scratchpad/src/org/apache/poi/hslf/record/SoundData.java ファイルの表示

@@ -17,11 +17,8 @@

package org.apache.poi.hslf.record;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.InflaterInputStream;

import org.apache.poi.util.LittleEndian;


+ 0
- 3
src/scratchpad/src/org/apache/poi/hslf/record/TextRulerAtom.java ファイルの表示

@@ -17,11 +17,8 @@

package org.apache.poi.hslf.record;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.InflaterInputStream;

import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.POILogger;

+ 913
- 860
src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
ファイル差分が大きすぎるため省略します
ファイルの表示


+ 0
- 0
src/scratchpad/src/org/apache/poi/hwpf/model/DocumentProperties.java ファイルの表示


変更されたファイルが多すぎるため、一部のファイルは表示されません

読み込み中…
キャンセル
保存