See <https://builds.apache.org/job/POI-DSL-OpenJDK/462/display/redirect?page=changes>
Changes: [fanningpj] [github-115] implement endnote. This closes #115 ------------------------------------------ [...truncated 415.96 KB...] [echo] * <p>The only significant difference between footnotes and [echo] * end notes is which part they go on. Footnotes are managed by the Footnotes part [echo] * {@link XWPFFootnotes} and end notes are managed by the Endnotes part {@link XWPFEndnotes}.</p> [echo] * @since 4.0.0 [echo] */ [echo] public abstract class AbstractXWPFFootnoteEndnote implements Iterable<XWPFParagraph>, IBody { [echo] [echo] private List<XWPFParagraph> paragraphs = new ArrayList<>(); [echo] private List<XWPFTable> tables = new ArrayList<>(); [echo] private List<XWPFPictureData> pictures = new ArrayList<>(); [echo] private List<IBodyElement> bodyElements = new ArrayList<>(); [echo] protected CTFtnEdn ctFtnEdn; [echo] protected AbstractXWPFFootnotesEndnotes footnotes; [echo] protected XWPFDocument document; [echo] [echo] public AbstractXWPFFootnoteEndnote() { [echo] super(); [echo] } [echo] [echo] @Internal [echo] protected AbstractXWPFFootnoteEndnote(XWPFDocument document, CTFtnEdn body) { [echo] ctFtnEdn = body; [echo] this.document = document; [echo] init(); [echo] } [echo] [echo] @Internal [echo] [echo] ===================================================== [echo] == File: <https://builds.apache.org/job/POI-DSL-OpenJDK/ws/src/ooxml/java/org/apache/poi/xwpf/usermodel/AbstractXWPFFootnotesEndnotes.java> [echo] ===================================================== [echo] package org.apache.poi.xwpf.usermodel; [echo] [echo] import java.util.ArrayList; [echo] import java.util.List; [echo] [echo] import org.apache.poi.ooxml.POIXMLDocumentPart; [echo] import org.apache.poi.openxml4j.opc.OPCPackage; [echo] import org.apache.poi.openxml4j.opc.PackagePart; [echo] [echo] /** [echo] * Base class for the Footnotes and Endnotes part implementations. [echo] * @since 4.0.0 [echo] */ [echo] public abstract class AbstractXWPFFootnotesEndnotes extends POIXMLDocumentPart { [echo] [echo] protected XWPFDocument document; [echo] protected List<AbstractXWPFFootnoteEndnote> listFootnote = new ArrayList<>(); [echo] private FootnoteEndnoteIdManager idManager; [echo] [echo] public AbstractXWPFFootnotesEndnotes(OPCPackage pkg) { [echo] super(pkg); [echo] } [echo] [echo] public AbstractXWPFFootnotesEndnotes(OPCPackage pkg, [echo] String coreDocumentRel) { [echo] super(pkg, coreDocumentRel); [echo] } [echo] [echo] public AbstractXWPFFootnotesEndnotes() { [echo] super(); [echo] } [echo] [echo] public AbstractXWPFFootnotesEndnotes(PackagePart part) { [echo] super(part); [echo] } [echo] [echo] public AbstractXWPFFootnotesEndnotes(POIXMLDocumentPart parent, PackagePart part) { [echo] super(parent, part); [echo] } [echo] [echo] [echo] public AbstractXWPFFootnoteEndnote getFootnoteById(int id) { [echo] for (AbstractXWPFFootnoteEndnote note : listFootnote) { [echo] if (note.getCTFtnEdn().getId().intValue() == id) [echo] return note; [echo] } [echo] return null; [echo] } [echo] [echo] /** [echo] [echo] ===================================================== [echo] == File: <https://builds.apache.org/job/POI-DSL-OpenJDK/ws/src/ooxml/java/org/apache/poi/xwpf/usermodel/FootnoteEndnoteIdManager.java> [echo] ===================================================== [echo] package org.apache.poi.xwpf.usermodel; [echo] [echo] import java.math.BigInteger; [echo] import java.util.ArrayList; [echo] import java.util.List; [echo] [echo] /** [echo] * Manages IDs for footnotes and endnotes. [echo] * <p>Footnotes and endnotes are managed in separate parts but [echo] * represent a single namespace of IDs.</p> [echo] */ [echo] public class FootnoteEndnoteIdManager { [echo] [echo] private XWPFDocument document; [echo] [echo] public FootnoteEndnoteIdManager(XWPFDocument document) { [echo] this.document = document; [echo] } [echo] [echo] /** [echo] * Gets the next ID number. [echo] * [echo] * @return ID number to use. [echo] */ [echo] public BigInteger nextId() { [echo] [echo] List<BigInteger> ids = new ArrayList<BigInteger>(); [echo] for (AbstractXWPFFootnoteEndnote note : document.getFootnotes()) { [echo] ids.add(note.getId()); [echo] } [echo] for (AbstractXWPFFootnoteEndnote note : document.getEndnotes()) { [echo] ids.add(note.getId()); [echo] } [echo] int cand = ids.size(); [echo] BigInteger newId = BigInteger.valueOf(cand); [echo] while (ids.contains(newId)) { [echo] cand++; [echo] newId = BigInteger.valueOf(cand); [echo] } [echo] [echo] return newId; [echo] } [echo] [echo] [echo] } [echo] [echo] ===================================================== [echo] == File: <https://builds.apache.org/job/POI-DSL-OpenJDK/ws/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFEndnote.java> [echo] ===================================================== [echo] package org.apache.poi.xwpf.usermodel; [echo] [echo] import org.apache.poi.util.Internal; [echo] import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdn; [echo] import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdnRef; [echo] import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR; [echo] [echo] /** [echo] * Represents an end note footnote. [echo] * <p>End notes are collected at the end of a document or section rather than [echo] * at the bottom of a page.</p> [echo] * <p>Create a new footnote using {@link XWPFDocument#createEndnote()} or [echo] * {@link XWPFEndnotes#createFootnote()}.</p> [echo] * <p>The first body element of a footnote should (or possibly must) be a paragraph [echo] * with the first run containing a CTFtnEdnRef object. The {@link XWPFFootnote#createParagraph()} [echo] * and {@link XWPFFootnote#createTable()} methods do this for you.</p> [echo] * <p>Footnotes have IDs that are unique across all footnotes in the document. You use [echo] * the footnote ID to create a reference to a footnote from within a paragraph.</p> [echo] * <p>To create a reference to a footnote within a paragraph you create a run [echo] * with a CTFtnEdnRef that specifies the ID of the target paragraph. [echo] * The {@link XWPFParagraph#addFootnoteReference(AbstractXWPFFootnoteEndnote)} [echo] * method does this for you.</p> [echo] * @since 4.0.0 [echo] */ [echo] public class XWPFEndnote extends AbstractXWPFFootnoteEndnote { [echo] [echo] public XWPFEndnote() {} [echo] [echo] @Internal [echo] public XWPFEndnote(XWPFDocument document, CTFtnEdn body) { [echo] super(document, body); [echo] } [echo] [echo] @Internal [echo] public XWPFEndnote(CTFtnEdn note, AbstractXWPFFootnotesEndnotes footnotes) { [echo] super(note, footnotes); [echo] } [echo] [echo] /** [echo] * Ensure that the specified paragraph has a reference marker for this [echo] * end note by adding a footnote reference if one is not found. [echo] * <p>This method is for the first paragraph in the footnote, not [echo] * paragraphs that will refer to the footnote. For references to [echo] * the footnote, use {@link XWPFParagraph#addFootnoteReference(AbstractXWPFFootnoteEndnote))}. [echo] * </p> [echo] * <p>The first run of the first paragraph in a footnote should [echo] * contain a {@link CTFtnEdnRef} object.</p> [echo] * [echo] * @param p The {@link XWPFParagraph} to ensure [echo] * @since 4.0.0 [echo] [echo] ===================================================== [echo] == File: <https://builds.apache.org/job/POI-DSL-OpenJDK/ws/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFEndnotes.java> [echo] ===================================================== [echo] package org.apache.poi.xwpf.usermodel; [echo] [echo] import static org.apache.poi.ooxml.POIXMLTypeLoader.DEFAULT_XML_OPTIONS; [echo] [echo] import java.io.IOException; [echo] import java.io.InputStream; [echo] import java.io.OutputStream; [echo] import java.math.BigInteger; [echo] import java.util.ArrayList; [echo] import java.util.List; [echo] [echo] import javax.xml.namespace.QName; [echo] [echo] import org.apache.poi.ooxml.POIXMLException; [echo] import org.apache.poi.openxml4j.exceptions.OpenXML4JException; [echo] import org.apache.poi.openxml4j.opc.PackagePart; [echo] import org.apache.poi.util.Internal; [echo] import org.apache.xmlbeans.XmlException; [echo] import org.apache.xmlbeans.XmlOptions; [echo] import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTEndnotes; [echo] import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdn; [echo] import org.openxmlformats.schemas.wordprocessingml.x2006.main.EndnotesDocument; [echo] import org.openxmlformats.schemas.wordprocessingml.x2006.main.STFtnEdn; [echo] [echo] [echo] /** [echo] * Looks after the collection of end notes for a document. [echo] * Managed end notes ({@link XWPFEndnote}). [echo] * @since 4.0.0 [echo] */ [echo] public class XWPFEndnotes extends AbstractXWPFFootnotesEndnotes { [echo] [echo] protected CTEndnotes ctEndnotes; [echo] [echo] public XWPFEndnotes() { [echo] super(); [echo] } [echo] [echo] /** [echo] * Construct XWPFEndnotes from a package part [echo] * [echo] * @param part the package part holding the data of the footnotes, [echo] * [echo] * @since POI 3.14-Beta1 [echo] */ [echo] public XWPFEndnotes(PackagePart part) throws IOException, OpenXML4JException { [echo] super(part); [echo] } [echo] [echo] /** BUILD FAILED <https://builds.apache.org/job/POI-DSL-OpenJDK/ws/build.xml>:2187: condition satisfied Total time: 19 minutes 39 seconds Build step 'Invoke Ant' marked build as failure Skipping publisher since build result is FAILURE Archiving artifacts [Fast Archiver] Compressed 234.52 MB of artifacts by 42.5% relative to #461 Skipping publisher since build result is FAILURE Recording test results --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org For additional commands, e-mail: dev-h...@poi.apache.org