Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,8 @@ public CTAbstractNum getCTAbstractNum() {
return ctAbstractNum;
}

public void setCtAbstractNum(CTAbstractNum ctAbstractNum) {
this.ctAbstractNum = ctAbstractNum;
}

}
18 changes: 17 additions & 1 deletion src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFNumbering.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more
import java.io.OutputStream;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.xml.namespace.QName;
Expand Down Expand Up @@ -237,7 +238,7 @@ public BigInteger addAbstractNum(XWPFAbstractNum abstractNum) {
if (abstractNum.getAbstractNum() != null) { // Use the current CTAbstractNum if it exists
ctNumbering.addNewAbstractNum().set(abstractNum.getAbstractNum());
} else {
ctNumbering.addNewAbstractNum();
abstractNum.setCtAbstractNum(ctNumbering.addNewAbstractNum());
abstractNum.getAbstractNum().setAbstractNumId(BigInteger.valueOf(pos));
ctNumbering.setAbstractNumArray(pos, abstractNum.getAbstractNum());
}
Expand Down Expand Up @@ -283,5 +284,20 @@ public BigInteger getAbstractNumID(BigInteger numID) {
return null;
return num.getCTNum().getAbstractNumId().getVal();
}

/**
* @return all abstractNums
*/
public List<XWPFAbstractNum> getAbstractNums() {
return Collections.unmodifiableList(abstractNums);
}

/**
* @return all nums
*/
public List<XWPFNum> getNums() {
return Collections.unmodifiableList(nums);
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more

import org.apache.poi.xwpf.XWPFTestDataSamples;
import org.junit.Test;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTAbstractNum;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNum;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumLvl;

Expand Down Expand Up @@ -63,6 +64,45 @@ public void testAddNumberingToDoc() throws IOException {
BigInteger compareAbstractNum = num.getCTNum().getAbstractNumId().getVal();
assertEquals(abstractNumId, compareAbstractNum);
}

@Test
public void testAddAbstractNumIfAbstractNumNotEqualNull() throws IOException {
BigInteger abstractNumId = BigInteger.valueOf(1);
XWPFDocument docOut = new XWPFDocument();
XWPFNumbering numbering = docOut.createNumbering();

CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();
// must set the AbstractNumId, Otherwise fail
cTAbstractNum.setAbstractNumId(abstractNumId);
XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);
abstractNumId = numbering.addAbstractNum(abstractNum);
BigInteger numId = numbering.addNum(abstractNumId);

XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut);

numbering = docIn.getNumbering();
XWPFNum num = numbering.getNum(numId);
BigInteger compareAbstractNum = num.getCTNum().getAbstractNumId().getVal();
assertEquals(abstractNumId, compareAbstractNum);
}

@Test
public void testAddAbstractNumIfAbstractNumEqualNull() throws IOException {
XWPFDocument docOut = new XWPFDocument();
XWPFNumbering numbering = docOut.createNumbering();

XWPFAbstractNum abstractNum = new XWPFAbstractNum();
BigInteger abstractNumId = numbering.addAbstractNum(abstractNum);
BigInteger numId = numbering.addNum(abstractNumId);

XWPFDocument docIn = XWPFTestDataSamples.writeOutAndReadBack(docOut);

numbering = docIn.getNumbering();
XWPFNum num = numbering.getNum(numId);

BigInteger compareAbstractNum = num.getCTNum().getAbstractNumId().getVal();
assertEquals(abstractNumId, compareAbstractNum);
}

@Test
public void testGetNumIlvl() throws IOException {
Expand Down