Skip to content

Commit 531284d

Browse files
etraisnel2ylussaud
authored andcommitted
#559 Always add new numbering to output document
During numIdCopy, if numbering isn't found in template, look it up in generated doc adapt test templates for 559 back to 3.3.5 Signed-off-by: Erwann Traisnel <erwann.traisnel@obeo.fr>
1 parent c56cd3f commit 531284d

2 files changed

Lines changed: 31 additions & 16 deletions

File tree

plugins/org.obeonetwork.m2doc.html/src/org/obeonetwork/m2doc/html/services/M2DocHTMLParser.java

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@
2828
import java.util.Set;
2929
import java.util.Stack;
3030

31+
import org.apache.poi.xwpf.usermodel.XWPFAbstractNum;
3132
import org.apache.poi.xwpf.usermodel.XWPFDocument;
33+
import org.apache.poi.xwpf.usermodel.XWPFNum;
3234
import org.apache.poi.xwpf.usermodel.XWPFNumbering;
3335
import org.eclipse.emf.common.util.URI;
3436
import org.eclipse.emf.ecore.resource.URIConverter;
@@ -61,7 +63,6 @@
6163
import org.obeonetwork.m2doc.element.impl.MTableImpl.MCellImpl;
6264
import org.obeonetwork.m2doc.element.impl.MTableImpl.MRowImpl;
6365
import org.obeonetwork.m2doc.element.impl.MTextImpl;
64-
import org.obeonetwork.m2doc.services.PaginationServices;
6566
import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STOnOff;
6667
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTAbstractNum;
6768
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber;
@@ -71,7 +72,6 @@
7172
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLvl;
7273
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNum;
7374
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumFmt;
74-
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumbering;
7575
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
7676
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMultiLevelType;
7777
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STNumberFormat;
@@ -2037,19 +2037,30 @@ private void setOrderedListNumbering(Context context, Element element) {
20372037
* the {@link Context}
20382038
*/
20392039
private void createNumbering(Context context) {
2040-
final CTAbstractNum res;
20412040
final XWPFNumbering numbering = destinationDocument.createNumbering();
2042-
final CTNumbering ctNumbering = PaginationServices.getCTNumbering(numbering);
2043-
res = ctNumbering.addNewAbstractNum();
2041+
2042+
// Create CTAbstractNum using the factory to avoid duplicate when creating XWPFAbstractNum
2043+
CTAbstractNum res = CTAbstractNum.Factory.newInstance();
20442044
res.addNewMultiLevelType().setVal(STMultiLevelType.HYBRID_MULTILEVEL);
2045-
BigInteger id = BigInteger.valueOf(ctNumbering.sizeOfAbstractNumArray() - 1);
2046-
res.setAbstractNumId(id);
2047-
final CTNum ctNum = ctNumbering.addNewNum();
2048-
ctNum.setNumId(BigInteger.valueOf(ctNumbering.sizeOfNumArray()));
2049-
ctNum.addNewAbstractNumId().setVal(id);
2045+
BigInteger abstractNumId = BigInteger.valueOf(numbering.getAbstractNums().size());
2046+
res.setAbstractNumId(abstractNumId);
2047+
XWPFAbstractNum newAbstractNum = new XWPFAbstractNum(res);
2048+
BigInteger finalAbsId = numbering.addAbstractNum(newAbstractNum);
2049+
2050+
// Update the reference (that was changed through addAbstractNum)
2051+
res = newAbstractNum.getCTAbstractNum();
2052+
newAbstractNum.setNumbering(numbering);
2053+
2054+
final CTNum ctNum = CTNum.Factory.newInstance();
2055+
ctNum.addNewAbstractNumId().setVal(finalAbsId);
2056+
BigInteger numId = BigInteger.valueOf(numbering.getNums().size() + 1);
2057+
ctNum.setNumId(numId);
2058+
XWPFNum newNum = new XWPFNum(ctNum);
2059+
newNum.setNumbering(numbering);
2060+
numbering.addNum(newNum);
20502061

20512062
context.numbering = res;
2052-
context.numberingID = ctNum.getNumId();
2063+
context.numberingID = numId;
20532064
}
20542065

20552066
/**

plugins/org.obeonetwork.m2doc/src/org/obeonetwork/m2doc/generator/RawCopier.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2016, 2025 Obeo.
2+
* Copyright (c) 2016, 2026 Obeo.
33
* All rights reserved. This program and the accompanying materials
44
* are made available under the terms of the Eclipse Public License v2.0
55
* which accompanies this distribution, and is available at
@@ -401,16 +401,20 @@ private XWPFParagraph copyParagraph(final IBody outputBody, final Map<String, St
401401
@SuppressWarnings("resource")
402402
private BigInteger copyNumID(IBody inputBody, IBody outputBody, BigInteger inputNumID) {
403403
final XWPFDocument inputDocument = inputBody.getXWPFDocument();
404-
final XWPFDocument ouptutDocument = outputBody.getXWPFDocument();
404+
final XWPFDocument outputDocument = outputBody.getXWPFDocument();
405405

406406
final BigInteger numId = inputDocument.getNumbering().getAbstractNumID(inputNumID);
407+
if (numId == null) {
408+
// If it's not found in the template, check in the generated document (implicit numbering from template constructs)
409+
return outputDocument.getNumbering().getAbstractNumID(inputNumID);
410+
}
407411
final XWPFAbstractNum inputNum = inputDocument.getNumbering().getAbstractNum(numId);
408412

409413
final XWPFAbstractNum outputNum = new XWPFAbstractNum((CTAbstractNum) inputNum.getCTAbstractNum().copy());
410-
final BigInteger newID = BigInteger.valueOf(ouptutDocument.getNumbering().getAbstractNums().size());
414+
final BigInteger newID = BigInteger.valueOf(outputDocument.getNumbering().getAbstractNums().size());
411415
outputNum.getAbstractNum().setAbstractNumId(newID);
412-
BigInteger outputNumID = ouptutDocument.getNumbering().addAbstractNum(outputNum);
413-
ouptutDocument.getNumbering().addNum(outputNumID);
416+
BigInteger outputNumID = outputDocument.getNumbering().addAbstractNum(outputNum);
417+
outputDocument.getNumbering().addNum(outputNumID);
414418
return outputNumID;
415419
}
416420

0 commit comments

Comments
 (0)