Skip to content

Commit 325c675

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 e73b52f commit 325c675

8 files changed

Lines changed: 37 additions & 18 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;
@@ -1985,19 +1985,30 @@ private void setOrderedListNumbering(Context context, Element element) {
19851985
* the {@link Context}
19861986
*/
19871987
private void createNumbering(Context context) {
1988-
final CTAbstractNum res;
19891988
final XWPFNumbering numbering = destinationDocument.createNumbering();
1990-
final CTNumbering ctNumbering = PaginationServices.getCTNumbering(numbering);
1991-
res = ctNumbering.addNewAbstractNum();
1989+
1990+
// Create CTAbstractNum using the factory to avoid duplicate when creating XWPFAbstractNum
1991+
CTAbstractNum res = CTAbstractNum.Factory.newInstance();
19921992
res.addNewMultiLevelType().setVal(STMultiLevelType.HYBRID_MULTILEVEL);
1993-
BigInteger id = BigInteger.valueOf(ctNumbering.sizeOfAbstractNumArray() - 1);
1994-
res.setAbstractNumId(id);
1995-
final CTNum ctNum = ctNumbering.addNewNum();
1996-
ctNum.setNumId(BigInteger.valueOf(ctNumbering.sizeOfNumArray()));
1997-
ctNum.addNewAbstractNumId().setVal(id);
1993+
BigInteger abstractNumId = BigInteger.valueOf(numbering.getAbstractNums().size());
1994+
res.setAbstractNumId(abstractNumId);
1995+
XWPFAbstractNum newAbstractNum = new XWPFAbstractNum(res);
1996+
BigInteger finalAbsId = numbering.addAbstractNum(newAbstractNum);
1997+
1998+
// Update the reference (that was changed through addAbstractNum)
1999+
res = newAbstractNum.getCTAbstractNum();
2000+
newAbstractNum.setNumbering(numbering);
2001+
2002+
final CTNum ctNum = CTNum.Factory.newInstance();
2003+
ctNum.addNewAbstractNumId().setVal(finalAbsId);
2004+
BigInteger numId = BigInteger.valueOf(numbering.getNums().size() + 1);
2005+
ctNum.setNumId(numId);
2006+
XWPFNum newNum = new XWPFNum(ctNum);
2007+
newNum.setNumbering(numbering);
2008+
numbering.addNum(newNum);
19982009

19992010
context.numbering = res;
2000-
context.numberingID = ctNum.getNumId();
2011+
context.numberingID = numId;
20012012
}
20022013

20032014
/**

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
@@ -367,16 +367,20 @@ private XWPFParagraph copyParagraph(final IBody outputBody, final Map<String, St
367367
@SuppressWarnings("resource")
368368
private BigInteger copyNumID(IBody inputBody, IBody outputBody, BigInteger inputNumID) {
369369
final XWPFDocument inputDocument = inputBody.getXWPFDocument();
370-
final XWPFDocument ouptutDocument = outputBody.getXWPFDocument();
370+
final XWPFDocument outputDocument = outputBody.getXWPFDocument();
371371

372372
final BigInteger numId = inputDocument.getNumbering().getAbstractNumID(inputNumID);
373+
if (numId == null) {
374+
// If it's not found in the template, check in the generated document (implicit numbering from template constructs)
375+
return outputDocument.getNumbering().getAbstractNumID(inputNumID);
376+
}
373377
final XWPFAbstractNum inputNum = inputDocument.getNumbering().getAbstractNum(numId);
374378

375379
final XWPFAbstractNum outputNum = new XWPFAbstractNum((CTAbstractNum) inputNum.getCTAbstractNum().copy());
376-
final BigInteger newID = BigInteger.valueOf(ouptutDocument.getNumbering().getAbstractNums().size());
380+
final BigInteger newID = BigInteger.valueOf(outputDocument.getNumbering().getAbstractNums().size());
377381
outputNum.getAbstractNum().setAbstractNumId(newID);
378-
BigInteger outputNumID = ouptutDocument.getNumbering().addAbstractNum(outputNum);
379-
ouptutDocument.getNumbering().addNum(outputNumID);
382+
BigInteger outputNumID = outputDocument.getNumbering().addAbstractNum(outputNum);
383+
outputDocument.getNumbering().addNum(outputNumID);
380384
return outputNumID;
381385
}
382386

Binary file not shown.
Binary file not shown.
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<genconf:Generation xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:genconf="http://www.obeonetwork.org/m2doc/genconf/1.0" name="bug399" templateFileName="bug399-template.docx" resultFileName="bug399-actual-generation.docx" validationFileName="bug399-actual-validation.docx">
2+
<genconf:Generation xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:genconf="http://www.obeonetwork.org/m2doc/genconf/1.0" name="bug399" templateFileName="bug533-template.docx" resultFileName="bug533-actual-generation.docx" validationFileName="bug533-actual-validation.docx">
3+
<options name="UpdateFields" value="false"/>
4+
<options name="IgnoreVersionCheck" value="false"/>
35
</genconf:Generation>
Binary file not shown.
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<genconf:Generation xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:genconf="http://www.obeonetwork.org/m2doc/genconf/1.0" name="bug399" templateFileName="bug399-template.docx" resultFileName="bug399-actual-generation.docx" validationFileName="bug399-actual-validation.docx">
2+
<genconf:Generation xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:genconf="http://www.obeonetwork.org/m2doc/genconf/1.0" name="bug399" templateFileName="bug533MultiCalls-template.docx" resultFileName="bug533MultiCalls-actual-generation.docx" validationFileName="bug533MultiCalls-actual-validation.docx">
3+
<options name="UpdateFields" value="false"/>
4+
<options name="IgnoreVersionCheck" value="false"/>
35
</genconf:Generation>

0 commit comments

Comments
 (0)