/** * get AbstractNum by abstractNumID * * @param abstractNumID * @return abstractNum with abstractNumId if no abstractNum exists with that abstractNumID * null will be returned */ public XWPFAbstractNum getAbstractNum(BigInteger abstractNumID) { for (XWPFAbstractNum abstractNum : abstractNums) { if (abstractNum.getAbstractNum().getAbstractNumId().equals(abstractNumID)) { return abstractNum; } } return null; }
/** * add a new AbstractNum and return its AbstractNumID * * @param abstractNum */ public BigInteger addAbstractNum(XWPFAbstractNum abstractNum) { int pos = abstractNums.size(); if (abstractNum.getAbstractNum() != null) { // Use the current CTAbstractNum if it exists ctNumbering.addNewAbstractNum().set(abstractNum.getAbstractNum()); } else { ctNumbering.addNewAbstractNum(); abstractNum.getAbstractNum().setAbstractNumId(BigInteger.valueOf(pos)); ctNumbering.setAbstractNumArray(pos, abstractNum.getAbstractNum()); } abstractNums.add(abstractNum); return abstractNum.getCTAbstractNum().getAbstractNumId(); }
/** * Compare AbstractNum with abstractNums of this numbering document. * If the content of abstractNum equals with an abstractNum of the List in numbering * the BigInteger Value of it will be returned. * If no equal abstractNum is existing null will be returned * * @param abstractNum * @return BigInteger */ public BigInteger getIdOfAbstractNum(XWPFAbstractNum abstractNum) { CTAbstractNum copy = (CTAbstractNum) abstractNum.getCTAbstractNum().copy(); XWPFAbstractNum newAbstractNum = new XWPFAbstractNum(copy, this); int i; for (i = 0; i < abstractNums.size(); i++) { newAbstractNum.getCTAbstractNum().setAbstractNumId(BigInteger.valueOf(i)); newAbstractNum.setNumbering(this); if (newAbstractNum.getCTAbstractNum().valueEquals(abstractNums.get(i).getCTAbstractNum())) { return newAbstractNum.getCTAbstractNum().getAbstractNumId(); } } return null; }
CTAbstractNum anum = xwpfAbstractNum.getCTAbstractNum();
continue; cTAbstractNum = xwpfAbstractNum.getCTAbstractNum(); cTAbstractNum.setAbstractNumId(BigInteger.valueOf(wrapper.getAbstractNumsSize() + 20)); cache.put(xwpfNum.getCTNum().getAbstractNumId().getVal(), cTAbstractNum); BigInteger numID = numbering.addNum(numbering.addAbstractNum(new XWPFAbstractNum(cTAbstractNum)));
/** * read numbering form an existing package */ @Override protected void onDocumentRead() throws IOException { NumberingDocument numberingDoc = null; InputStream is; is = getPackagePart().getInputStream(); try { numberingDoc = NumberingDocument.Factory.parse(is, DEFAULT_XML_OPTIONS); ctNumbering = numberingDoc.getNumbering(); //get any Nums for (CTNum ctNum : ctNumbering.getNumArray()) { nums.add(new XWPFNum(ctNum, this)); } for (CTAbstractNum ctAbstractNum : ctNumbering.getAbstractNumArray()) { abstractNums.add(new XWPFAbstractNum(ctAbstractNum, this)); } isNew = false; } catch (XmlException e) { throw new POIXMLException(); } finally { is.close(); } }
private ParagraphLevelCounter loadLevelTuples(CTDecimalNumber abNum) { //Unfortunately, we need to go this far into the underlying structure //to get the abstract num information for the edge case where //someone skips a level and the format is not context-free, e.g. "1.B.i". XWPFAbstractNum abstractNum = numbering.getAbstractNum(abNum.getVal()); CTAbstractNum ctAbstractNum = abstractNum.getCTAbstractNum(); LevelTuple[] levels = new LevelTuple[ctAbstractNum.sizeOfLvlArray()]; for (int i = 0; i < levels.length; i++) { levels[i] = buildTuple(i, ctAbstractNum.getLvlArray(i)); } return new ParagraphLevelCounter(levels); }
public BigInteger addNewNumbericId(Pair<Enum, String> numFmt) { XWPFNumbering numbering = this.getNumbering(); if (null == numbering) { numbering = this.createNumbering(); } NumberingWrapper numberingWrapper = new NumberingWrapper(numbering); CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance(); // if we have an existing document, we must determine the next // free number first. cTAbstractNum .setAbstractNumId(BigInteger.valueOf(numberingWrapper.getAbstractNumsSize() + 10)); Enum fmt = numFmt.getLeft(); String val = numFmt.getRight(); CTLvl cTLvl = cTAbstractNum.addNewLvl(); cTLvl.addNewNumFmt().setVal(fmt); cTLvl.addNewLvlText().setVal(val); cTLvl.addNewStart().setVal(BigInteger.valueOf(1)); cTLvl.setIlvl(BigInteger.valueOf(0)); if (fmt == STNumberFormat.BULLET) { cTLvl.addNewLvlJc().setVal(STJc.LEFT); } else { // cTLvl.setIlvl(BigInteger.valueOf(0)); } XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum); BigInteger abstractNumID = numbering.addAbstractNum(abstractNum); return numbering.addNum(abstractNumID); }
/** * Returns numbering format for this paragraph, eg bullet or * lowerLetter. * Returns null if this paragraph does not have numeric style. */ public String getNumFmt() { BigInteger numID = getNumID(); XWPFNumbering numbering = document.getNumbering(); if (numID != null && numbering != null) { XWPFNum num = numbering.getNum(numID); if (num != null) { BigInteger ilvl = getNumIlvl(); BigInteger abstractNumId = num.getCTNum().getAbstractNumId().getVal(); CTAbstractNum anum = numbering.getAbstractNum(abstractNumId).getAbstractNum(); CTLvl level = null; for (int i = 0; i < anum.sizeOfLvlArray(); i++) { CTLvl lvl = anum.getLvlArray(i); if (lvl.getIlvl().equals(ilvl)) { level = lvl; break; } } if (level != null && level.getNumFmt() != null && level.getNumFmt().getVal() != null) { return level.getNumFmt().getVal().toString(); } } } return null; }
/** * add a new AbstractNum and return its AbstractNumID * @param abstractNum */ public BigInteger addAbstractNum(XWPFAbstractNum abstractNum){ int pos = abstractNums.size(); if(abstractNum.getAbstractNum() != null){ // Use the current CTAbstractNum if it exists ctNumbering.addNewAbstractNum().set(abstractNum.getAbstractNum()); } else { ctNumbering.addNewAbstractNum(); abstractNum.getAbstractNum().setAbstractNumId(BigInteger.valueOf(pos)); ctNumbering.setAbstractNumArray(pos, abstractNum.getAbstractNum()); } abstractNums.add(abstractNum); return abstractNum.getCTAbstractNum().getAbstractNumId(); }
/** * Compare AbstractNum with abstractNums of this numbering document. * If the content of abstractNum equals with an abstractNum of the List in numbering * the BigInteger Value of it will be returned. * If no equal abstractNum is existing null will be returned * * @param abstractNum * @return BigInteger */ public BigInteger getIdOfAbstractNum(XWPFAbstractNum abstractNum) { CTAbstractNum copy = (CTAbstractNum) abstractNum.getCTAbstractNum().copy(); XWPFAbstractNum newAbstractNum = new XWPFAbstractNum(copy, this); int i; for (i = 0; i < abstractNums.size(); i++) { newAbstractNum.getCTAbstractNum().setAbstractNumId(BigInteger.valueOf(i)); newAbstractNum.setNumbering(this); if (newAbstractNum.getCTAbstractNum().valueEquals(abstractNums.get(i).getCTAbstractNum())) { return newAbstractNum.getCTAbstractNum().getAbstractNumId(); } } return null; }
/** * first discover all the numbering styles defined in the template. * a bit brute force since I can't find a way to just enumerate all the * abstractNum's inside the numbering.xml */ protected void initNumberingStyles() { numbering = document.getNumbering(); BigInteger curIdx = BigInteger.ONE; XWPFAbstractNum abstractNum; while ((abstractNum = numbering.getAbstractNum(curIdx)) != null) { if (abstractNum != null) { CTString pStyle = abstractNum.getCTAbstractNum().getLvlArray(0).getPStyle(); if (pStyle != null) { numberStyles.put(pStyle.getVal(), abstractNum); } } curIdx = curIdx.add(BigInteger.ONE); } }
/** * read numbering form an existing package */ @Override protected void onDocumentRead() throws IOException { NumberingDocument numberingDoc = null; InputStream is; is = getPackagePart().getInputStream(); try { numberingDoc = NumberingDocument.Factory.parse(is, DEFAULT_XML_OPTIONS); ctNumbering = numberingDoc.getNumbering(); //get any Nums for (CTNum ctNum : ctNumbering.getNumArray()) { nums.add(new XWPFNum(ctNum, this)); } for (CTAbstractNum ctAbstractNum : ctNumbering.getAbstractNumArray()) { abstractNums.add(new XWPFAbstractNum(ctAbstractNum, this)); } isNew = false; } catch (XmlException e) { throw new POIXMLException(); } finally { is.close(); } }
/** * get AbstractNum by abstractNumID * * @param abstractNumID * @return abstractNum with abstractNumId if no abstractNum exists with that abstractNumID * null will be returned */ public XWPFAbstractNum getAbstractNum(BigInteger abstractNumID) { for (XWPFAbstractNum abstractNum : abstractNums) { if (abstractNum.getAbstractNum().getAbstractNumId().equals(abstractNumID)) { return abstractNum; } } return null; }
/** * add a new AbstractNum and return its AbstractNumID * * @param abstractNum */ public BigInteger addAbstractNum(XWPFAbstractNum abstractNum) { int pos = abstractNums.size(); if (abstractNum.getAbstractNum() != null) { // Use the current CTAbstractNum if it exists ctNumbering.addNewAbstractNum().set(abstractNum.getAbstractNum()); } else { ctNumbering.addNewAbstractNum(); abstractNum.getAbstractNum().setAbstractNumId(BigInteger.valueOf(pos)); ctNumbering.setAbstractNumArray(pos, abstractNum.getAbstractNum()); } abstractNums.add(abstractNum); return abstractNum.getCTAbstractNum().getAbstractNumId(); }
/** * Compare AbstractNum with abstractNums of this numbering document. * If the content of abstractNum equals with an abstractNum of the List in numbering * the BigInteger Value of it will be returned. * If no equal abstractNum is existing null will be returned * * @param abstractNum * @return BigInteger */ public BigInteger getIdOfAbstractNum(XWPFAbstractNum abstractNum){ CTAbstractNum copy = (CTAbstractNum) abstractNum.getCTAbstractNum().copy(); XWPFAbstractNum newAbstractNum = new XWPFAbstractNum(copy, this); int i; for (i = 0; i < abstractNums.size(); i++) { newAbstractNum.getCTAbstractNum().setAbstractNumId(BigInteger.valueOf(i)); newAbstractNum.setNumbering(this); if(newAbstractNum.getCTAbstractNum().valueEquals(abstractNums.get(i).getCTAbstractNum())){ return newAbstractNum.getCTAbstractNum().getAbstractNumId(); } } return null; }
private ParagraphLevelCounter loadLevelTuples(CTDecimalNumber abNum) { //Unfortunately, we need to go this far into the underlying structure //to get the abstract num information for the edge case where //someone skips a level and the format is not context-free, e.g. "1.B.i". XWPFAbstractNum abstractNum = numbering.getAbstractNum(abNum.getVal()); CTAbstractNum ctAbstractNum = abstractNum.getCTAbstractNum(); LevelTuple[] levels = new LevelTuple[ctAbstractNum.sizeOfLvlArray()]; for (int i = 0; i < levels.length; i++) { levels[i] = buildTuple(i, ctAbstractNum.getLvlArray(i)); } return new ParagraphLevelCounter(levels); }
/** * read numbering form an existing package */ @Override protected void onDocumentRead() throws IOException{ NumberingDocument numberingDoc = null; InputStream is; is = getPackagePart().getInputStream(); try { numberingDoc = NumberingDocument.Factory.parse(is); ctNumbering = numberingDoc.getNumbering(); //get any Nums for(CTNum ctNum : ctNumbering.getNumList()) { nums.add(new XWPFNum(ctNum, this)); } for(CTAbstractNum ctAbstractNum : ctNumbering.getAbstractNumList()){ abstractNums.add(new XWPFAbstractNum(ctAbstractNum, this)); } isNew = false; } catch (XmlException e) { throw new POIXMLException(); } }
/** * get AbstractNum by abstractNumID * @param abstractNumID * @return abstractNum with abstractNumId if no abstractNum exists with that abstractNumID * null will be returned */ public XWPFAbstractNum getAbstractNum(BigInteger abstractNumID){ for(XWPFAbstractNum abstractNum: abstractNums){ if(abstractNum.getAbstractNum().getAbstractNumId().equals(abstractNumID)){ return abstractNum; } } return null; } /**
private ParagraphLevelCounter loadLevelTuples(CTDecimalNumber abNum) { //Unfortunately, we need to go this far into the underlying structure //to get the abstract num information for the edge case where //someone skips a level and the format is not context-free, e.g. "1.B.i". XWPFAbstractNum abstractNum = numbering.getAbstractNum(abNum.getVal()); CTAbstractNum ctAbstractNum = abstractNum.getCTAbstractNum(); LevelTuple[] levels = new LevelTuple[ctAbstractNum.sizeOfLvlArray()]; for (int i = 0; i < levels.length; i++) { levels[i] = buildTuple(i, ctAbstractNum.getLvlArray(i)); } return new ParagraphLevelCounter(levels); }