You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2015/07/19 21:00:38 UTC

svn commit: r1691843 [17/30] - in /poi/branches/common_sl: ./ .settings/ legal/ osgi/ osgi/src/ src/examples/src/org/apache/poi/hpsf/examples/ src/examples/src/org/apache/poi/hssf/usermodel/examples/ src/examples/src/org/apache/poi/ss/examples/ src/exa...

Modified: poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java (original)
+++ poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java Sun Jul 19 19:00:32 2015
@@ -28,11 +28,14 @@ import org.apache.xmlbeans.XmlCursor;
 import org.apache.xmlbeans.XmlObject;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTAbstractNum;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTBorder;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdnRef;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHyperlink;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTInd;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLvl;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNum;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumLvl;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTOnOff;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPBdr;
@@ -56,16 +59,18 @@ import org.openxmlformats.schemas.wordpr
 import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTextAlignment;
 
 /**
- * <p>A Paragraph within a Document, Table, Header etc.</p> 
- * 
+ * <p>A Paragraph within a Document, Table, Header etc.</p>
+ * <p/>
  * <p>A paragraph has a lot of styling information, but the
- *  actual text (possibly along with more styling) is held on
- *  the child {@link XWPFRun}s.</p>
+ * actual text (possibly along with more styling) is held on
+ * the child {@link XWPFRun}s.</p>
  */
 public class XWPFParagraph implements IBodyElement, IRunBody, ISDTContents, Paragraph {
     private final CTP paragraph;
     protected IBody part;
-    /** For access to the document's hyperlink, comments, tables etc */
+    /**
+     * For access to the document's hyperlink, comments, tables etc
+     */
     protected XWPFDocument document;
     protected List<XWPFRun> runs;
     protected List<IRunElement> iruns;
@@ -75,10 +80,10 @@ public class XWPFParagraph implements IB
     public XWPFParagraph(CTP prgrph, IBody part) {
         this.paragraph = prgrph;
         this.part = part;
-        
+
         this.document = part.getXWPFDocument();
 
-        if (document==null) {
+        if (document == null) {
             throw new NullPointerException();
         }
 
@@ -88,7 +93,7 @@ public class XWPFParagraph implements IB
         buildRunsInOrderFromXml(paragraph);
 
         // Look for bits associated with the runs
-        for(XWPFRun run : runs) {
+        for (XWPFRun run : runs) {
             CTR r = run.getCTR();
 
             // Check for bits that only apply when attached to a core document
@@ -97,13 +102,13 @@ public class XWPFParagraph implements IB
             c.selectPath("child::*");
             while (c.toNextSelection()) {
                 XmlObject o = c.getObject();
-                if(o instanceof CTFtnEdnRef) {
-                    CTFtnEdnRef ftn = (CTFtnEdnRef)o;
+                if (o instanceof CTFtnEdnRef) {
+                    CTFtnEdnRef ftn = (CTFtnEdnRef) o;
                     footnoteText.append(" [").append(ftn.getId()).append(": ");
                     XWPFFootnote footnote =
-                        ftn.getDomNode().getLocalName().equals("footnoteReference") ?
-                            document.getFootnoteByID(ftn.getId().intValue()) :
-                            document.getEndnoteByID(ftn.getId().intValue());
+                            ftn.getDomNode().getLocalName().equals("footnoteReference") ?
+                                    document.getFootnoteByID(ftn.getId().intValue()) :
+                                    document.getEndnoteByID(ftn.getId().intValue());
 
                     boolean first = true;
                     for (XWPFParagraph p : footnote.getParagraphs()) {
@@ -123,8 +128,8 @@ public class XWPFParagraph implements IB
 
     /**
      * Identifies (in order) the parts of the paragraph /
-     *  sub-paragraph that correspond to character text
-     *  runs, and builds the appropriate runs for these.
+     * sub-paragraph that correspond to character text
+     * runs, and builds the appropriate runs for these.
      */
     private void buildRunsInOrderFromXml(XmlObject object) {
         XmlCursor c = object.newCursor();
@@ -132,71 +137,72 @@ public class XWPFParagraph implements IB
         while (c.toNextSelection()) {
             XmlObject o = c.getObject();
             if (o instanceof CTR) {
-               XWPFRun r = new XWPFRun((CTR) o, this);
-               runs.add(r);
-               iruns.add(r);
-           }
-           if (o instanceof CTHyperlink) {
-               CTHyperlink link = (CTHyperlink) o;
-               for (CTR r : link.getRArray()) {
-                   XWPFHyperlinkRun hr = new XWPFHyperlinkRun(link, r, this);
-                   runs.add(hr);
-                   iruns.add(hr);
-               }
-           }
-           if (o instanceof CTSdtBlock) {
-               XWPFSDT cc = new XWPFSDT((CTSdtBlock) o, part);
-               iruns.add(cc);
-           }
-           if (o instanceof CTSdtRun) {
-               XWPFSDT cc = new XWPFSDT((CTSdtRun) o, part);
-               iruns.add(cc);
-           }
-           if (o instanceof CTRunTrackChange) {
-               for (CTR r : ((CTRunTrackChange) o).getRArray()) {
-                   XWPFRun cr = new XWPFRun(r, this);
-                   runs.add(cr);
-                   iruns.add(cr);
-               }
-           }
-           if (o instanceof CTSimpleField) {
-               for (CTR r : ((CTSimpleField) o).getRArray()) {
-                   XWPFRun cr = new XWPFRun(r, this);
-                   runs.add(cr);
-                   iruns.add(cr);
-               }
-           }
+                XWPFRun r = new XWPFRun((CTR) o, this);
+                runs.add(r);
+                iruns.add(r);
+            }
+            if (o instanceof CTHyperlink) {
+                CTHyperlink link = (CTHyperlink) o;
+                for (CTR r : link.getRArray()) {
+                    XWPFHyperlinkRun hr = new XWPFHyperlinkRun(link, r, this);
+                    runs.add(hr);
+                    iruns.add(hr);
+                }
+            }
+            if (o instanceof CTSdtBlock) {
+                XWPFSDT cc = new XWPFSDT((CTSdtBlock) o, part);
+                iruns.add(cc);
+            }
+            if (o instanceof CTSdtRun) {
+                XWPFSDT cc = new XWPFSDT((CTSdtRun) o, part);
+                iruns.add(cc);
+            }
+            if (o instanceof CTRunTrackChange) {
+                for (CTR r : ((CTRunTrackChange) o).getRArray()) {
+                    XWPFRun cr = new XWPFRun(r, this);
+                    runs.add(cr);
+                    iruns.add(cr);
+                }
+            }
+            if (o instanceof CTSimpleField) {
+                for (CTR r : ((CTSimpleField) o).getRArray()) {
+                    XWPFRun cr = new XWPFRun(r, this);
+                    runs.add(cr);
+                    iruns.add(cr);
+                }
+            }
             if (o instanceof CTSmartTagRun) {
-                // Smart Tags can be nested many times. 
+                // Smart Tags can be nested many times.
                 // This implementation does not preserve the tagging information
                 buildRunsInOrderFromXml(o);
             }
         }
         c.dispose();
     }
-    
+
     @Internal
     public CTP getCTP() {
         return paragraph;
     }
 
-    public List<XWPFRun> getRuns(){
+    public List<XWPFRun> getRuns() {
         return Collections.unmodifiableList(runs);
     }
-    
+
     /**
      * Return literal runs and sdt/content control objects.
+     *
      * @return List<IRunElement>
      */
     public List<IRunElement> getIRuns() {
         return Collections.unmodifiableList(iruns);
     }
-    
-    public boolean isEmpty(){
+
+    public boolean isEmpty() {
         return !paragraph.getDomNode().hasChildNodes();
     }
 
-    public XWPFDocument getDocument(){
+    public XWPFDocument getDocument() {
         return document;
     }
 
@@ -207,8 +213,8 @@ public class XWPFParagraph implements IB
     public String getText() {
         StringBuffer out = new StringBuffer();
         for (IRunElement run : iruns) {
-            if (run instanceof XWPFSDT){
-                out.append(((XWPFSDT)run).getContent().getText());
+            if (run instanceof XWPFSDT) {
+                out.append(((XWPFSDT) run).getContent().getText());
             } else {
                 out.append(run.toString());
             }
@@ -219,28 +225,31 @@ public class XWPFParagraph implements IB
 
     /**
      * Return styleID of the paragraph if style exist for this paragraph
-     * if not, null will be returned     
-     * @return        styleID as String
+     * if not, null will be returned
+     *
+     * @return styleID as String
      */
     public String getStyleID() {
         if (paragraph.getPPr() != null) {
-            if(paragraph.getPPr().getPStyle()!= null) {
-                if (paragraph.getPPr().getPStyle().getVal()!= null)
+            if (paragraph.getPPr().getPStyle() != null) {
+                if (paragraph.getPPr().getPStyle().getVal() != null)
                     return paragraph.getPPr().getPStyle().getVal();
             }
         }
         return null;
-    }        
+    }
+
     /**
      * If style exist for this paragraph
      * NumId of the paragraph will be returned.
-     * If style not exist null will be returned     
-     * @return    NumID as BigInteger
+     * If style not exist null will be returned
+     *
+     * @return NumID as BigInteger
      */
-    public BigInteger getNumID(){
-        if(paragraph.getPPr()!=null){
-            if(paragraph.getPPr().getNumPr()!=null){
-                if(paragraph.getPPr().getNumPr().getNumId()!=null)
+    public BigInteger getNumID() {
+        if (paragraph.getPPr() != null) {
+            if (paragraph.getPPr().getNumPr() != null) {
+                if (paragraph.getPPr().getNumPr().getNumId() != null)
                     return paragraph.getPPr().getNumPr().getNumId().getVal();
             }
         }
@@ -248,14 +257,31 @@ public class XWPFParagraph implements IB
     }
 
     /**
+     * setNumID of Paragraph
+     *
+     * @param numPos
+     */
+    public void setNumID(BigInteger numPos) {
+        if (paragraph.getPPr() == null)
+            paragraph.addNewPPr();
+        if (paragraph.getPPr().getNumPr() == null)
+            paragraph.getPPr().addNewNumPr();
+        if (paragraph.getPPr().getNumPr().getNumId() == null) {
+            paragraph.getPPr().getNumPr().addNewNumId();
+        }
+        paragraph.getPPr().getNumPr().getNumId().setVal(numPos);
+    }
+
+    /**
      * Returns Ilvl of the numeric style for this paragraph.
      * Returns null if this paragraph does not have numeric style.
+     *
      * @return Ilvl as BigInteger
      */
     public BigInteger getNumIlvl() {
-        if(paragraph.getPPr()!=null){
-            if(paragraph.getPPr().getNumPr()!=null){
-                if(paragraph.getPPr().getNumPr().getIlvl()!=null)
+        if (paragraph.getPPr() != null) {
+            if (paragraph.getPPr().getNumPr() != null) {
+                if (paragraph.getPPr().getNumPr().getIlvl() != null)
                     return paragraph.getPPr().getNumPr().getIlvl().getVal();
             }
         }
@@ -264,27 +290,28 @@ public class XWPFParagraph implements IB
 
     /**
      * Returns numbering format for this paragraph, eg bullet or
-     *  lowerLetter.
+     * 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) {
+        if (numID != null && numbering != null) {
             XWPFNum num = numbering.getNum(numID);
-            if(num != null) {
+            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++) {
+                for (int i = 0; i < anum.sizeOfLvlArray(); i++) {
                     CTLvl lvl = anum.getLvlArray(i);
-                    if(lvl.getIlvl().equals(ilvl)) {
+                    if (lvl.getIlvl().equals(ilvl)) {
                         level = lvl;
                         break;
                     }
                 }
-                if(level != null)
+                if (level != null && level.getNumFmt() != null
+                        && level.getNumFmt().getVal() != null)
                     return level.getNumFmt().getVal().toString();
             }
         }
@@ -292,18 +319,87 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * setNumID of Paragraph
-     * @param numPos
+     * Returns the text that should be used around the paragraph level numbers.
+     *
+     * @return a string (e.g. "%1.") or null if the value is not found.
      */
-    public void setNumID(BigInteger numPos) {
-        if(paragraph.getPPr()==null)
-            paragraph.addNewPPr();
-        if(paragraph.getPPr().getNumPr()==null)
-            paragraph.getPPr().addNewNumPr();
-        if(paragraph.getPPr().getNumPr().getNumId()==null){
-            paragraph.getPPr().getNumPr().addNewNumId();
+    public String getNumLevelText() {
+        BigInteger numID = getNumID();
+        XWPFNumbering numbering = document.getNumbering();
+        if (numID != null && numbering != null) {
+            XWPFNum num = numbering.getNum(numID);
+            if (num != null) {
+                BigInteger ilvl = getNumIlvl();
+                CTNum ctNum = num.getCTNum();
+                if (ctNum == null)
+                    return null;
+
+                CTDecimalNumber ctDecimalNumber = ctNum.getAbstractNumId();
+                if (ctDecimalNumber == null)
+                    return null;
+
+                BigInteger abstractNumId = ctDecimalNumber.getVal();
+                if (abstractNumId == null)
+                    return null;
+
+                XWPFAbstractNum xwpfAbstractNum = numbering.getAbstractNum(abstractNumId);
+
+                if (xwpfAbstractNum == null)
+                    return null;
+
+                CTAbstractNum anum = xwpfAbstractNum.getCTAbstractNum();
+
+                if (anum == null)
+                    return null;
+
+                CTLvl level = null;
+                for (int i = 0; i < anum.sizeOfLvlArray(); i++) {
+                    CTLvl lvl = anum.getLvlArray(i);
+                    if (lvl != null && lvl.getIlvl() != null && lvl.getIlvl().equals(ilvl)) {
+                        level = lvl;
+                        break;
+                    }
+                }
+                if (level != null && level.getLvlText() != null
+                        && level.getLvlText().getVal() != null)
+                    return level.getLvlText().getVal().toString();
+            }
         }
-        paragraph.getPPr().getNumPr().getNumId().setVal(numPos);
+        return null;
+    }
+
+    /**
+     * Gets the numstartOverride for the paragraph numbering for this paragraph.
+     *
+     * @return returns the overridden start number or null if there is no override for this paragraph.
+     */
+    public BigInteger getNumStartOverride() {
+        BigInteger numID = getNumID();
+        XWPFNumbering numbering = document.getNumbering();
+        if (numID != null && numbering != null) {
+            XWPFNum num = numbering.getNum(numID);
+
+            if (num != null) {
+                CTNum ctNum = num.getCTNum();
+                if (ctNum == null) {
+                    return null;
+                }
+                BigInteger ilvl = getNumIlvl();
+                CTNumLvl level = null;
+                for (int i = 0; i < ctNum.sizeOfLvlOverrideArray(); i++) {
+                    CTNumLvl ctNumLvl = ctNum.getLvlOverrideArray(i);
+                    if (ctNumLvl != null && ctNumLvl.getIlvl() != null &&
+                            ctNumLvl.getIlvl().equals(ilvl)) {
+                        level = ctNumLvl;
+                        break;
+                    }
+                }
+                if (level != null && level.getStartOverride() != null) {
+                    return level.getStartOverride().getVal();
+                }
+            }
+        }
+        return null;
     }
 
     /**
@@ -312,7 +408,7 @@ public class XWPFParagraph implements IB
      */
     public String getParagraphText() {
         StringBuffer out = new StringBuffer();
-        for(XWPFRun run : runs) {
+        for (XWPFRun run : runs) {
             out.append(run.toString());
         }
         return out.toString();
@@ -323,7 +419,7 @@ public class XWPFParagraph implements IB
      */
     public String getPictureText() {
         StringBuffer out = new StringBuffer();
-        for(XWPFRun run : runs) {
+        for (XWPFRun run : runs) {
             out.append(run.getPictureText());
         }
         return out.toString();
@@ -332,7 +428,7 @@ public class XWPFParagraph implements IB
     /**
      * Returns the footnote text of the paragraph
      *
-     * @return  the footnote text or empty string if the paragraph does not have footnotes
+     * @return the footnote text or empty string if the paragraph does not have footnotes
      */
     public String getFootnoteText() {
         return footnoteText.toString();
@@ -385,6 +481,7 @@ public class XWPFParagraph implements IB
     public int getFontAlignment() {
         return getAlignment().getValue();
     }
+
     public void setFontAlignment(int align) {
         ParagraphAlignment pAlign = ParagraphAlignment.valueOf(align);
         setAlignment(pAlign);
@@ -412,7 +509,7 @@ public class XWPFParagraph implements IB
         CTPPr pr = getCTPPr();
         return (pr == null || !pr.isSetTextAlignment()) ? TextAlignment.AUTO
                 : TextAlignment.valueOf(pr.getTextAlignment().getVal()
-                        .intValue());
+                .intValue());
     }
 
     /**
@@ -438,9 +535,27 @@ public class XWPFParagraph implements IB
         CTPPr pr = getCTPPr();
         CTTextAlignment textAlignment = pr.isSetTextAlignment() ? pr
                 .getTextAlignment() : pr.addNewTextAlignment();
-                STTextAlignment.Enum en = STTextAlignment.Enum
-                        .forInt(valign.getValue());
-                textAlignment.setVal(en);
+        STTextAlignment.Enum en = STTextAlignment.Enum
+                .forInt(valign.getValue());
+        textAlignment.setVal(en);
+    }
+
+    /**
+     * Specifies the border which shall be displayed above a set of paragraphs
+     * which have the same set of paragraph border settings.
+     *
+     * @return paragraphBorder - the top border for the paragraph
+     * @see #setBorderTop(Borders)
+     * @see Borders a list of all types of borders
+     */
+    public Borders getBorderTop() {
+        CTPBdr border = getCTPBrd(false);
+        CTBorder ct = null;
+        if (border != null) {
+            ct = border.getTop();
+        }
+        STBorder.Enum ptrn = (ct != null) ? ct.getVal() : STBorder.NONE;
+        return Borders.valueOf(ptrn.intValue());
     }
 
     /**
@@ -484,20 +599,20 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies the border which shall be displayed above a set of paragraphs
-     * which have the same set of paragraph border settings.
+     * Specifies the border which shall be displayed below a set of
+     * paragraphs which have the same set of paragraph border settings.
      *
-     * @return paragraphBorder - the top border for the paragraph
-     * @see #setBorderTop(Borders)
+     * @return paragraphBorder - the bottom border for the paragraph
+     * @see #setBorderBottom(Borders)
      * @see Borders a list of all types of borders
      */
-    public Borders getBorderTop() {
+    public Borders getBorderBottom() {
         CTPBdr border = getCTPBrd(false);
         CTBorder ct = null;
         if (border != null) {
-            ct = border.getTop();
+            ct = border.getBottom();
         }
-        STBorder.Enum ptrn = (ct != null) ? ct.getVal() : STBorder.NONE;
+        STBorder.Enum ptrn = ct != null ? ct.getVal() : STBorder.NONE;
         return Borders.valueOf(ptrn.intValue());
     }
 
@@ -538,18 +653,18 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies the border which shall be displayed below a set of
-     * paragraphs which have the same set of paragraph border settings.
+     * Specifies the border which shall be displayed on the left side of the
+     * page around the specified paragraph.
      *
-     * @return paragraphBorder - the bottom border for the paragraph
-     * @see #setBorderBottom(Borders)
-     * @see Borders a list of all types of borders
+     * @return ParagraphBorder - the left border for the paragraph
+     * @see #setBorderLeft(Borders)
+     * @see Borders for a list of all possible borders
      */
-    public Borders getBorderBottom() {
+    public Borders getBorderLeft() {
         CTPBdr border = getCTPBrd(false);
         CTBorder ct = null;
         if (border != null) {
-            ct = border.getBottom();
+            ct = border.getLeft();
         }
         STBorder.Enum ptrn = ct != null ? ct.getVal() : STBorder.NONE;
         return Borders.valueOf(ptrn.intValue());
@@ -587,18 +702,18 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies the border which shall be displayed on the left side of the
+     * Specifies the border which shall be displayed on the right side of the
      * page around the specified paragraph.
      *
-     * @return ParagraphBorder - the left border for the paragraph
-     * @see #setBorderLeft(Borders)
+     * @return ParagraphBorder - the right border for the paragraph
+     * @see #setBorderRight(Borders)
      * @see Borders for a list of all possible borders
      */
-    public Borders getBorderLeft() {
+    public Borders getBorderRight() {
         CTPBdr border = getCTPBrd(false);
         CTBorder ct = null;
         if (border != null) {
-            ct = border.getLeft();
+            ct = border.getRight();
         }
         STBorder.Enum ptrn = ct != null ? ct.getVal() : STBorder.NONE;
         return Borders.valueOf(ptrn.intValue());
@@ -636,18 +751,18 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies the border which shall be displayed on the right side of the
-     * page around the specified paragraph.
+     * Specifies the border which shall be displayed between each paragraph in a
+     * set of paragraphs which have the same set of paragraph border settings.
      *
-     * @return ParagraphBorder - the right border for the paragraph
-     * @see #setBorderRight(Borders)
+     * @return ParagraphBorder - the between border for the paragraph
+     * @see #setBorderBetween(Borders)
      * @see Borders for a list of all possible borders
      */
-    public Borders getBorderRight() {
+    public Borders getBorderBetween() {
         CTPBdr border = getCTPBrd(false);
         CTBorder ct = null;
         if (border != null) {
-            ct = border.getRight();
+            ct = border.getBetween();
         }
         STBorder.Enum ptrn = ct != null ? ct.getVal() : STBorder.NONE;
         return Borders.valueOf(ptrn.intValue());
@@ -689,21 +804,29 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies the border which shall be displayed between each paragraph in a
-     * set of paragraphs which have the same set of paragraph border settings.
+     * Specifies that when rendering this document in a paginated
+     * view, the contents of this paragraph are rendered on the start of a new
+     * page in the document.
+     * <p/>
+     * If this element is omitted on a given paragraph,
+     * its value is determined by the setting previously set at any level of the
+     * style hierarchy (i.e. that previous setting remains unchanged). If this
+     * setting is never specified in the style hierarchy, then this property
+     * shall not be applied. Since the paragraph is specified to start on a new
+     * page, it begins page two even though it could have fit on page one.
+     * </p>
      *
-     * @return ParagraphBorder - the between border for the paragraph
-     * @see #setBorderBetween(Borders)
-     * @see Borders for a list of all possible borders
+     * @return boolean - if page break is set
      */
-    public Borders getBorderBetween() {
-        CTPBdr border = getCTPBrd(false);
-        CTBorder ct = null;
-        if (border != null) {
-            ct = border.getBetween();
+    public boolean isPageBreak() {
+        CTPPr ppr = getCTPPr();
+        CTOnOff ct_pageBreak = ppr.isSetPageBreakBefore() ? ppr
+                .getPageBreakBefore() : null;
+        if (ct_pageBreak != null
+                && ct_pageBreak.getVal().intValue() == STOnOff.INT_TRUE) {
+            return true;
         }
-        STBorder.Enum ptrn = ct != null ? ct.getVal() : STBorder.NONE;
-        return Borders.valueOf(ptrn.intValue());
+        return false;
     }
 
     /**
@@ -733,29 +856,14 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies that when rendering this document in a paginated
-     * view, the contents of this paragraph are rendered on the start of a new
-     * page in the document.
-     * <p/>
-     * If this element is omitted on a given paragraph,
-     * its value is determined by the setting previously set at any level of the
-     * style hierarchy (i.e. that previous setting remains unchanged). If this
-     * setting is never specified in the style hierarchy, then this property
-     * shall not be applied. Since the paragraph is specified to start on a new
-     * page, it begins page two even though it could have fit on page one.
-     * </p>
+     * Specifies the spacing that should be added after the last line in this
+     * paragraph in the document in absolute units.
      *
-     * @return boolean - if page break is set
+     * @return int - value representing the spacing after the paragraph
      */
-    public boolean isPageBreak() {
-        CTPPr ppr = getCTPPr();
-        CTOnOff ct_pageBreak = ppr.isSetPageBreakBefore() ? ppr
-                .getPageBreakBefore() : null;
-        if (ct_pageBreak != null
-                && ct_pageBreak.getVal().intValue() == STOnOff.INT_TRUE) {
-            return true;
-        }
-        return false;
+    public int getSpacingAfter() {
+        CTSpacing spacing = getCTSpacing(false);
+        return (spacing != null && spacing.isSetAfter()) ? spacing.getAfter().intValue() : -1;
     }
 
     /**
@@ -783,11 +891,12 @@ public class XWPFParagraph implements IB
      * Specifies the spacing that should be added after the last line in this
      * paragraph in the document in absolute units.
      *
-     * @return int - value representing the spacing after the paragraph
+     * @return bigInteger - value representing the spacing after the paragraph
+     * @see #setSpacingAfterLines(int)
      */
-    public int getSpacingAfter() {
+    public int getSpacingAfterLines() {
         CTSpacing spacing = getCTSpacing(false);
-        return (spacing != null && spacing.isSetAfter()) ? spacing.getAfter().intValue() : -1;
+        return (spacing != null && spacing.isSetAfterLines()) ? spacing.getAfterLines().intValue() : -1;
     }
 
     /**
@@ -813,20 +922,18 @@ public class XWPFParagraph implements IB
         spacing.setAfterLines(bi);
     }
 
-
     /**
-     * Specifies the spacing that should be added after the last line in this
+     * Specifies the spacing that should be added above the first line in this
      * paragraph in the document in absolute units.
      *
-     * @return bigInteger - value representing the spacing after the paragraph
-     * @see #setSpacingAfterLines(int)
+     * @return the spacing that should be added above the first line
+     * @see #setSpacingBefore(int)
      */
-    public int getSpacingAfterLines() {
+    public int getSpacingBefore() {
         CTSpacing spacing = getCTSpacing(false);
-        return (spacing != null && spacing.isSetAfterLines()) ? spacing.getAfterLines().intValue() : -1;
+        return (spacing != null && spacing.isSetBefore()) ? spacing.getBefore().intValue() : -1;
     }
 
-
     /**
      * Specifies the spacing that should be added above the first line in this
      * paragraph in the document in absolute units.
@@ -844,15 +951,16 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies the spacing that should be added above the first line in this
-     * paragraph in the document in absolute units.
+     * Specifies the spacing that should be added before the first line in this paragraph in the
+     * document in line units.
+     * The value of this attribute is specified in one hundredths of a line.
      *
-     * @return the spacing that should be added above the first line
-     * @see #setSpacingBefore(int)
+     * @return the spacing that should be added before the first line in this paragraph
+     * @see #setSpacingBeforeLines(int)
      */
-    public int getSpacingBefore() {
+    public int getSpacingBeforeLines() {
         CTSpacing spacing = getCTSpacing(false);
-        return (spacing != null && spacing.isSetBefore()) ? spacing.getBefore().intValue() : -1;
+        return (spacing != null && spacing.isSetBeforeLines()) ? spacing.getBeforeLines().intValue() : -1;
     }
 
     /**
@@ -874,19 +982,20 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies the spacing that should be added before the first line in this paragraph in the
-     * document in line units.
-     * The value of this attribute is specified in one hundredths of a line.
+     * Specifies how the spacing between lines is calculated as stored in the
+     * line attribute. If this attribute is omitted, then it shall be assumed to
+     * be of a value auto if a line attribute value is present.
      *
-     * @return the spacing that should be added before the first line in this paragraph
-     * @see #setSpacingBeforeLines(int)
+     * @return rule
+     * @see LineSpacingRule
+     * @see #setSpacingLineRule(LineSpacingRule)
      */
-    public int getSpacingBeforeLines() {
+    public LineSpacingRule getSpacingLineRule() {
         CTSpacing spacing = getCTSpacing(false);
-        return (spacing != null && spacing.isSetBeforeLines()) ? spacing.getBeforeLines().intValue() : -1;
+        return (spacing != null && spacing.isSetLineRule()) ? LineSpacingRule.valueOf(spacing
+                .getLineRule().intValue()) : LineSpacingRule.AUTO;
     }
 
-
     /**
      * Specifies how the spacing between lines is calculated as stored in the
      * line attribute. If this attribute is omitted, then it shall be assumed to
@@ -901,21 +1010,24 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies how the spacing between lines is calculated as stored in the
-     * line attribute. If this attribute is omitted, then it shall be assumed to
-     * be of a value auto if a line attribute value is present.
+     * Specifies the indentation which shall be placed between the left text
+     * margin for this paragraph and the left edge of that paragraph's content
+     * in a left to right paragraph, and the right text margin and the right
+     * edge of that paragraph's text in a right to left paragraph
+     * <p/>
+     * If this attribute is omitted, its value shall be assumed to be zero.
+     * Negative values are defined such that the text is moved past the text margin,
+     * positive values move the text inside the text margin.
+     * </p>
      *
-     * @return rule
-     * @see LineSpacingRule
-     * @see #setSpacingLineRule(LineSpacingRule)
+     * @return indentation or null if indentation is not set
      */
-    public LineSpacingRule getSpacingLineRule() {
-        CTSpacing spacing = getCTSpacing(false);
-        return (spacing != null && spacing.isSetLineRule()) ? LineSpacingRule.valueOf(spacing
-                .getLineRule().intValue()) : LineSpacingRule.AUTO;
+    public int getIndentationLeft() {
+        CTInd indentation = getCTInd(false);
+        return (indentation != null && indentation.isSetLeft()) ? indentation.getLeft().intValue()
+                : -1;
     }
 
-
     /**
      * Specifies the indentation which shall be placed between the left text
      * margin for this paragraph and the left edge of that paragraph's content
@@ -936,8 +1048,8 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies the indentation which shall be placed between the left text
-     * margin for this paragraph and the left edge of that paragraph's content
+     * Specifies the indentation which shall be placed between the right text
+     * margin for this paragraph and the right edge of that paragraph's content
      * in a left to right paragraph, and the right text margin and the right
      * edge of that paragraph's text in a right to left paragraph
      * <p/>
@@ -948,12 +1060,13 @@ public class XWPFParagraph implements IB
      *
      * @return indentation or null if indentation is not set
      */
-    public int getIndentationLeft() {
+
+    public int getIndentationRight() {
         CTInd indentation = getCTInd(false);
-        return (indentation != null && indentation.isSetLeft()) ? indentation.getLeft().intValue()
+        return (indentation != null && indentation.isSetRight()) ? indentation.getRight().intValue()
                 : -1;
     }
-    
+
     /**
      * Specifies the indentation which shall be placed between the right text
      * margin for this paragraph and the right edge of that paragraph's content
@@ -974,23 +1087,21 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies the indentation which shall be placed between the right text
-     * margin for this paragraph and the right edge of that paragraph's content
-     * in a left to right paragraph, and the right text margin and the right
-     * edge of that paragraph's text in a right to left paragraph
-     * <p/>
-     * If this attribute is omitted, its value shall be assumed to be zero.
-     * Negative values are defined such that the text is moved past the text margin,
-     * positive values move the text inside the text margin.
-     * </p>
+     * Specifies the indentation which shall be removed from the first line of
+     * the parent paragraph, by moving the indentation on the first line back
+     * towards the beginning of the direction of text flow.
+     * This indentation is
+     * specified relative to the paragraph indentation which is specified for
+     * all other lines in the parent paragraph.
+     * The firstLine and hanging
+     * attributes are mutually exclusive, if both are specified, then the
+     * firstLine value is ignored.
      *
      * @return indentation or null if indentation is not set
      */
-
-    public int getIndentationRight() {
+    public int getIndentationHanging() {
         CTInd indentation = getCTInd(false);
-        return (indentation != null && indentation.isSetRight()) ? indentation.getRight().intValue()
-                : -1;
+        return (indentation != null && indentation.isSetHanging()) ? indentation.getHanging().intValue() : -1;
     }
 
     /**
@@ -1014,24 +1125,6 @@ public class XWPFParagraph implements IB
     }
 
     /**
-     * Specifies the indentation which shall be removed from the first line of
-     * the parent paragraph, by moving the indentation on the first line back
-     * towards the beginning of the direction of text flow.
-     * This indentation is
-     * specified relative to the paragraph indentation which is specified for
-     * all other lines in the parent paragraph.
-     * The firstLine and hanging
-     * attributes are mutually exclusive, if both are specified, then the
-     * firstLine value is ignored.
-     *
-     * @return indentation or null if indentation is not set
-     */
-    public int getIndentationHanging() {
-        CTInd indentation = getCTInd(false);
-        return (indentation != null && indentation.isSetHanging()) ? indentation.getHanging().intValue() : -1;
-    }
-
-    /**
      * Specifies the additional indentation which shall be applied to the first
      * line of the parent paragraph. This additional indentation is specified
      * relative to the paragraph indentation which is specified for all other
@@ -1040,15 +1133,16 @@ public class XWPFParagraph implements IB
      * mutually exclusive, if both are specified, then the firstLine value is
      * ignored.
      * If the firstLineChars attribute is also specified, then this
-     * value is ignored. If this attribute is omitted, then its value shall be
+     * value is ignored.
+     * If this attribute is omitted, then its value shall be
      * assumed to be zero (if needed).
      *
-     * @param indentation
+     * @return indentation or null if indentation is not set
      */
-    public void setIndentationFirstLine(int indentation) {
-        CTInd indent = getCTInd(true);
-        BigInteger bi = new BigInteger("" + indentation);
-        indent.setFirstLine(bi);
+    public int getIndentationFirstLine() {
+        CTInd indentation = getCTInd(false);
+        return (indentation != null && indentation.isSetFirstLine()) ? indentation.getFirstLine().intValue()
+                : -1;
     }
 
     /**
@@ -1060,21 +1154,21 @@ public class XWPFParagraph implements IB
      * mutually exclusive, if both are specified, then the firstLine value is
      * ignored.
      * If the firstLineChars attribute is also specified, then this
-     * value is ignored.
-     * If this attribute is omitted, then its value shall be
+     * value is ignored. If this attribute is omitted, then its value shall be
      * assumed to be zero (if needed).
      *
-     * @return indentation or null if indentation is not set
+     * @param indentation
      */
-    public int getIndentationFirstLine() {
-        CTInd indentation = getCTInd(false);
-        return (indentation != null && indentation.isSetFirstLine()) ? indentation.getFirstLine().intValue()
-                : -1;
+    public void setIndentationFirstLine(int indentation) {
+        CTInd indent = getCTInd(true);
+        BigInteger bi = new BigInteger("" + indentation);
+        indent.setFirstLine(bi);
     }
 
     public int getIndentFromLeft() {
         return getIndentFromLeft();
     }
+
     public void setIndentFromLeft(int dxaLeft) {
         setIndentationLeft(dxaLeft);
     }
@@ -1082,6 +1176,7 @@ public class XWPFParagraph implements IB
     public int getIndentFromRight() {
         return getIndentFromRight();
     }
+
     public void setIndentFromRight(int dxaRight) {
         setIndentationRight(dxaRight);
     }
@@ -1089,6 +1184,7 @@ public class XWPFParagraph implements IB
     public int getFirstLineIndent() {
         return getIndentationFirstLine();
     }
+
     public void setFirstLineIndent(int first) {
         setIndentationFirstLine(first);
     }
@@ -1099,6 +1195,25 @@ public class XWPFParagraph implements IB
      * (breaking on the character level) or by moving the word to the following
      * line (breaking on the word level).
      *
+     * @return boolean
+     */
+    public boolean isWordWrapped() {
+        CTOnOff wordWrap = getCTPPr().isSetWordWrap() ? getCTPPr()
+                .getWordWrap() : null;
+        if (wordWrap != null) {
+            return (wordWrap.getVal() == STOnOff.ON
+                    || wordWrap.getVal() == STOnOff.TRUE || wordWrap.getVal() == STOnOff.X_1) ? true
+                    : false;
+        }
+        return false;
+    }
+
+    /**
+     * This element specifies whether a consumer shall break Latin text which
+     * exceeds the text extents of a line by breaking the word across two lines
+     * (breaking on the character level) or by moving the word to the following
+     * line (breaking on the word level).
+     *
      * @param wrap - boolean
      */
     public void setWordWrapped(boolean wrap) {
@@ -1109,36 +1224,29 @@ public class XWPFParagraph implements IB
         else
             wordWrap.unsetVal();
     }
+
+    public boolean isWordWrap() {
+        return isWordWrapped();
+    }
+
     @Deprecated
     public void setWordWrap(boolean wrap) {
         setWordWrapped(wrap);
     }
 
     /**
-     * This element specifies whether a consumer shall break Latin text which
-     * exceeds the text extents of a line by breaking the word across two lines
-     * (breaking on the character level) or by moving the word to the following
-     * line (breaking on the word level).
-     *
-     * @return boolean
+     * @return the style of the paragraph
      */
-    public boolean isWordWrapped() {
-        CTOnOff wordWrap = getCTPPr().isSetWordWrap() ? getCTPPr()
-                .getWordWrap() : null;
-        if (wordWrap != null) {
-            return (wordWrap.getVal() == STOnOff.ON
-                    || wordWrap.getVal() == STOnOff.TRUE || wordWrap.getVal() == STOnOff.X_1) ? true
-                    : false;
-        }
-        return false;
-    }
-    public boolean isWordWrap() {
-        return isWordWrapped();
+    public String getStyle() {
+        CTPPr pr = getCTPPr();
+        CTString style = pr.isSetPStyle() ? pr.getPStyle() : null;
+        return style != null ? style.getVal() : null;
     }
 
     /**
      * This method provides a style to the paragraph
      * This is useful when, e.g. an Heading style has to be assigned
+     *
      * @param newStyle
      */
     public void setStyle(String newStyle) {
@@ -1146,15 +1254,6 @@ public class XWPFParagraph implements IB
         CTString style = pr.getPStyle() != null ? pr.getPStyle() : pr.addNewPStyle();
         style.setVal(newStyle);
     }
-    
-    /**
-     * @return  the style of the paragraph
-     */
-    public String getStyle() {
-        CTPPr pr = getCTPPr();
-        CTString style = pr.isSetPStyle() ? pr.getPStyle() : null;
-        return style != null ? style.getVal() : null;
-    }
 
     /**
      * Get a <b>copy</b> of the currently used CTPBrd, if none is used, return
@@ -1201,20 +1300,21 @@ public class XWPFParagraph implements IB
                 : paragraph.getPPr();
         return pr;
     }
-    
-    
+
+
     /**
-     * add a new run at the end of the position of 
+     * add a new run at the end of the position of
      * the content of parameter run
+     *
      * @param run
      */
-    protected void addRun(CTR run){
+    protected void addRun(CTR run) {
         int pos;
         pos = paragraph.sizeOfRArray();
         paragraph.addNewR();
         paragraph.setRArray(pos, run);
     }
-    
+
     /**
      * Appends a new run to this paragraph
      *
@@ -1229,14 +1329,15 @@ public class XWPFParagraph implements IB
 
     /**
      * insert a new Run in RunArray
+     *
      * @param pos
-     * @return  the inserted run
+     * @return the inserted run
      */
-    public XWPFRun insertNewRun(int pos){
+    public XWPFRun insertNewRun(int pos) {
         if (pos >= 0 && pos <= paragraph.sizeOfRArray()) {
             CTR ctRun = paragraph.insertNewR(pos);
             XWPFRun newRun = new XWPFRun(ctRun, this);
-            
+
             // To update the iruns, find where we're going
             // in the normal runs, and go in there
             int iPos = iruns.size();
@@ -1248,10 +1349,10 @@ public class XWPFParagraph implements IB
                 }
             }
             iruns.add(iPos, newRun);
-            
+
             // Runs itself is easy to update
             runs.add(pos, newRun);
-            
+
             return newRun;
         }
         return null;
@@ -1261,42 +1362,43 @@ public class XWPFParagraph implements IB
      * this methods parse the paragraph and search for the string searched.
      * If it finds the string, it will return true and the position of the String
      * will be saved in the parameter startPos.
+     *
      * @param searched
      * @param startPos
      */
-    public TextSegement searchText(String searched,PositionInParagraph startPos) {
-        int startRun = startPos.getRun(), 
-            startText = startPos.getText(),
-            startChar = startPos.getChar();
+    public TextSegement searchText(String searched, PositionInParagraph startPos) {
+        int startRun = startPos.getRun(),
+                startText = startPos.getText(),
+                startChar = startPos.getChar();
         int beginRunPos = 0, candCharPos = 0;
         boolean newList = false;
         CTR[] rArray = paragraph.getRArray();
-        for (int runPos=startRun; runPos<rArray.length; runPos++) {
-            int beginTextPos = 0,beginCharPos = 0, textPos = 0,  charPos = 0;    
+        for (int runPos = startRun; runPos < rArray.length; runPos++) {
+            int beginTextPos = 0, beginCharPos = 0, textPos = 0, charPos = 0;
             CTR ctRun = rArray[runPos];
             XmlCursor c = ctRun.newCursor();
             c.selectPath("./*");
-            while(c.toNextSelection()){
+            while (c.toNextSelection()) {
                 XmlObject o = c.getObject();
-                if(o instanceof CTText){
-                    if(textPos>=startText){
-                        String candidate = ((CTText)o).getStringValue();
-                        if(runPos==startRun)
-                            charPos= startChar;
+                if (o instanceof CTText) {
+                    if (textPos >= startText) {
+                        String candidate = ((CTText) o).getStringValue();
+                        if (runPos == startRun)
+                            charPos = startChar;
                         else
                             charPos = 0;
-                        
-                        for(; charPos<candidate.length(); charPos++){
-                            if((candidate.charAt(charPos)==searched.charAt(0))&&(candCharPos==0)){
+
+                        for (; charPos < candidate.length(); charPos++) {
+                            if ((candidate.charAt(charPos) == searched.charAt(0)) && (candCharPos == 0)) {
                                 beginTextPos = textPos;
                                 beginCharPos = charPos;
                                 beginRunPos = runPos;
                                 newList = true;
                             }
-                            if(candidate.charAt(charPos)==searched.charAt(candCharPos)){
-                                if(candCharPos+1<searched.length())
+                            if (candidate.charAt(charPos) == searched.charAt(candCharPos)) {
+                                if (candCharPos + 1 < searched.length())
                                     candCharPos++;
-                                else if(newList){
+                                else if (newList) {
                                     TextSegement segement = new TextSegement();
                                     segement.setBeginRun(beginRunPos);
                                     segement.setBeginText(beginTextPos);
@@ -1306,57 +1408,55 @@ public class XWPFParagraph implements IB
                                     segement.setEndChar(charPos);
                                     return segement;
                                 }
-                            }
-                            else {
-                                candCharPos=0;
+                            } else {
+                                candCharPos = 0;
                             }
                         }
                     }
                     textPos++;
-                }
-                else if(o instanceof CTProofErr){
+                } else if (o instanceof CTProofErr) {
                     c.removeXml();
-                }
-                else if(o instanceof CTRPr);
+                } else if (o instanceof CTRPr) ;
                     //do nothing
                 else
-                    candCharPos=0;
+                    candCharPos = 0;
             }
 
             c.dispose();
         }
         return null;
     }
-    
+
     /**
      * get a Text
+     *
      * @param segment
      */
-    public String getText(TextSegement segment){
+    public String getText(TextSegement segment) {
         int runBegin = segment.getBeginRun();
         int textBegin = segment.getBeginText();
-        int charBegin = segment.getBeginChar(); 
+        int charBegin = segment.getBeginChar();
         int runEnd = segment.getEndRun();
         int textEnd = segment.getEndText();
-        int charEnd    = segment.getEndChar();
+        int charEnd = segment.getEndChar();
         StringBuilder out = new StringBuilder();
         CTR[] rArray = paragraph.getRArray();
-        for(int i=runBegin; i<=runEnd;i++){
+        for (int i = runBegin; i <= runEnd; i++) {
             CTText[] tArray = rArray[i].getTArray();
-            int startText=0, endText = tArray.length-1;
-            if(i==runBegin)
-                startText=textBegin;
-            if(i==runEnd)
+            int startText = 0, endText = tArray.length - 1;
+            if (i == runBegin)
+                startText = textBegin;
+            if (i == runEnd)
                 endText = textEnd;
-            for(int j=startText;j<=endText;j++){
+            for (int j = startText; j <= endText; j++) {
                 String tmpText = tArray[j].getStringValue();
-                int startChar=0, endChar = tmpText.length()-1;
-                if((j==textBegin)&&(i==runBegin))
-                    startChar=charBegin;
-                if((j==textEnd)&&(i==runEnd)){
+                int startChar = 0, endChar = tmpText.length() - 1;
+                if ((j == textBegin) && (i == runBegin))
+                    startChar = charBegin;
+                if ((j == textEnd) && (i == runEnd)) {
                     endChar = charEnd;
                 }
-                out.append(tmpText.substring(startChar, endChar+1));
+                out.append(tmpText.substring(startChar, endChar + 1));
             }
         }
         return out.toString();
@@ -1364,13 +1464,18 @@ public class XWPFParagraph implements IB
 
     /**
      * removes a Run at the position pos in the paragraph
+     *
      * @param pos
      * @return true if the run was removed
      */
-    public boolean removeRun(int pos){
+    public boolean removeRun(int pos) {
         if (pos >= 0 && pos < paragraph.sizeOfRArray()) {
-            getCTP().removeR(pos);
+            // Remove the run from our high level lists
+            XWPFRun run = runs.get(pos);
             runs.remove(pos);
+            iruns.remove(run);
+            // Remove the run from the low-level XML
+            getCTP().removeR(pos);
             return true;
         }
         return false;
@@ -1378,23 +1483,24 @@ public class XWPFParagraph implements IB
 
     /**
      * returns the type of the BodyElement Paragraph
+     *
      * @see org.apache.poi.xwpf.usermodel.IBodyElement#getElementType()
      */
     public BodyElementType getElementType() {
         return BodyElementType.PARAGRAPH;
     }
 
-    public IBody getBody()
-    {
+    public IBody getBody() {
         return part;
     }
 
     /**
      * returns the part of the bodyElement
+     *
      * @see org.apache.poi.xwpf.usermodel.IBody#getPart()
      */
     public POIXMLDocumentPart getPart() {
-        if(part != null){
+        if (part != null) {
             return part.getPart();
         }
         return null;
@@ -1402,7 +1508,7 @@ public class XWPFParagraph implements IB
 
     /**
      * returns the partType of the bodyPart which owns the bodyElement
-     * 
+     *
      * @see org.apache.poi.xwpf.usermodel.IBody#getPartType()
      */
     public BodyType getPartType() {
@@ -1411,7 +1517,7 @@ public class XWPFParagraph implements IB
 
     /**
      * adds a new Run to the Paragraph
-     * 
+     *
      * @param r
      */
     public void addRun(XWPFRun r) {
@@ -1422,7 +1528,7 @@ public class XWPFParagraph implements IB
 
     /**
      * return the XWPFRun-Element which owns the CTR run-Element
-     * 
+     *
      * @param r
      */
     public XWPFRun getRun(CTR r) {

Modified: poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java (original)
+++ poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPicture.java Sun Jul 19 19:00:32 2015
@@ -28,51 +28,51 @@ import org.openxmlformats.schemas.drawin
 public class XWPFPicture {
 
     private CTPicture ctPic;
-    private String description;
-    private XWPFRun run;
-
-    public XWPFPicture(CTPicture ctPic, XWPFRun run){
-        this.run = run;
-        this.ctPic = ctPic;
-        description = ctPic.getNvPicPr().getCNvPr().getDescr();
+    private String description;
+    private XWPFRun run;
+
+    public XWPFPicture(CTPicture ctPic, XWPFRun run) {
+        this.run = run;
+        this.ctPic = ctPic;
+        description = ctPic.getNvPicPr().getCNvPr().getDescr();
     }
-
-    /**
-     * Link Picture with PictureData
-     * @param rel
-     */
-    public void setPictureReference(PackageRelationship rel){
-        ctPic.getBlipFill().getBlip().setEmbed(rel.getId());
-    }
-
+
+    /**
+     * Link Picture with PictureData
+     *
+     * @param rel
+     */
+    public void setPictureReference(PackageRelationship rel) {
+        ctPic.getBlipFill().getBlip().setEmbed(rel.getId());
+    }
+
     /**
      * Return the underlying CTPicture bean that holds all properties for this picture
-     *
-     * @return the underlying CTPicture bean
-     */
-    public CTPicture getCTPicture(){
-        return ctPic;
-    }
-
+     *
+     * @return the underlying CTPicture bean
+     */
+    public CTPicture getCTPicture() {
+        return ctPic;
+    }
+
     /**
-     * Get the PictureData of the Picture, if present.
-     * Note - not all kinds of picture have data
-     */
-    public XWPFPictureData getPictureData(){
-        CTBlipFillProperties blipProps = ctPic.getBlipFill();
-
-        if(blipProps == null || !blipProps.isSetBlip()) {
-            // return null if Blip data is missing
-            return null;
-        }
-
-        String blipId = blipProps.getBlip().getEmbed();
-        POIXMLDocumentPart part = run.getParent().getPart();
-        if (part != null)
-        {
-            POIXMLDocumentPart relatedPart = part.getRelationById(blipId);
-            if (relatedPart instanceof XWPFPictureData) {
-                return (XWPFPictureData) relatedPart;
+     * Get the PictureData of the Picture, if present.
+     * Note - not all kinds of picture have data
+     */
+    public XWPFPictureData getPictureData() {
+        CTBlipFillProperties blipProps = ctPic.getBlipFill();
+
+        if (blipProps == null || !blipProps.isSetBlip()) {
+            // return null if Blip data is missing
+            return null;
+        }
+
+        String blipId = blipProps.getBlip().getEmbed();
+        POIXMLDocumentPart part = run.getParent().getPart();
+        if (part != null) {
+            POIXMLDocumentPart relatedPart = part.getRelationById(blipId);
+            if (relatedPart instanceof XWPFPictureData) {
+                return (XWPFPictureData) relatedPart;
             }
         }
         return null;

Modified: poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java (original)
+++ poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFPictureData.java Sun Jul 19 19:00:32 2015
@@ -40,12 +40,13 @@ import org.apache.poi.util.IOUtils;
 public class XWPFPictureData extends POIXMLDocumentPart {
 
     /**
-     * Relationships for each known picture type
-     */
-    protected static final POIXMLRelation[] RELATIONS;
-    static {
-        RELATIONS = new POIXMLRelation[13];
-        RELATIONS[Document.PICTURE_TYPE_EMF] = XWPFRelation.IMAGE_EMF;
+     * Relationships for each known picture type
+     */
+    protected static final POIXMLRelation[] RELATIONS;
+
+    static {
+        RELATIONS = new POIXMLRelation[13];
+        RELATIONS[Document.PICTURE_TYPE_EMF] = XWPFRelation.IMAGE_EMF;
         RELATIONS[Document.PICTURE_TYPE_WMF] = XWPFRelation.IMAGE_WMF;
         RELATIONS[Document.PICTURE_TYPE_PICT] = XWPFRelation.IMAGE_PICT;
         RELATIONS[Document.PICTURE_TYPE_JPEG] = XWPFRelation.IMAGE_JPEG;
@@ -59,24 +60,23 @@ public class XWPFPictureData extends POI
     }
 
     private Long checksum = null;
-
-    /**
-     * Create a new XWPFGraphicData node
-     *
-     */
-    protected XWPFPictureData() {
-        super();
+
+    /**
+     * Create a new XWPFGraphicData node
+     */
+    protected XWPFPictureData() {
+        super();
     }
 
     /**
      * Construct XWPFPictureData from a package part
-     *
-     * @param part the package part holding the drawing data,
-     * @param rel  the package relationship holding this drawing,
-     * the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/image
-     */
-    public XWPFPictureData(PackagePart part, PackageRelationship rel) {
-        super(part, rel);
+     *
+     * @param part the package part holding the drawing data,
+     * @param rel  the package relationship holding this drawing,
+     *             the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/image
+     */
+    public XWPFPictureData(PackagePart part, PackageRelationship rel) {
+        super(part, rel);
     }
 
     @Override
@@ -91,12 +91,13 @@ public class XWPFPictureData extends POI
      * You can grab the picture data directly from the underlying package part as follows:
      * <br/>
      * <code>
-     * InputStream is = getPackagePart().getInputStream();
-     * </code>
-     * </p>
-     * @return the Picture data.
-     */
-    public byte[] getData() {
+     * InputStream is = getPackagePart().getInputStream();
+     * </code>
+     * </p>
+     *
+     * @return the Picture data.
+     */
+    public byte[] getData() {
         try {
             return IOUtils.toByteArray(getPackagePart().getInputStream());
         } catch (IOException e) {
@@ -115,21 +116,22 @@ public class XWPFPictureData extends POI
             return null;
         return name.substring(name.lastIndexOf('/') + 1);
     }
-
-    /**
-     * Suggests a file extension for this image.
-     * @return the file extension.
-     */
-    public String suggestFileExtension() {
+
+    /**
+     * Suggests a file extension for this image.
+     *
+     * @return the file extension.
+     */
+    public String suggestFileExtension() {
         return getPackagePart().getPartName().getExtension();
     }
-
-    /**
-     * Return an integer constant that specifies type of this picture
-     * 
-     * @return an integer constant that specifies type of this picture
-     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_EMF
-     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_WMF
+
+    /**
+     * Return an integer constant that specifies type of this picture
+     *
+     * @return an integer constant that specifies type of this picture
+     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_EMF
+     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_WMF
      * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PICT
      * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_JPEG
      * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PNG
@@ -217,13 +219,13 @@ public class XWPFPictureData extends POI
 
                 if (!ownPackage.equals(foreignPackage)) {
                     return false;
-                }
-            }
-        }
-        
-        Long foreignChecksum = picData.getChecksum();
-        Long localChecksum = getChecksum();
-
+                }
+            }
+        }
+
+        Long foreignChecksum = picData.getChecksum();
+        Long localChecksum = getChecksum();
+
         if (!(localChecksum.equals(foreignChecksum))) {
             return false;
         }
@@ -233,13 +235,13 @@ public class XWPFPictureData extends POI
     @Override
     public int hashCode() {
         return getChecksum().hashCode();
-    }
-
-    /**
-     * *PictureData objects store the actual content in the part directly without keeping a 
-     * copy like all others therefore we need to handle them differently.
-     */
-    @Override
+    }
+
+    /**
+     * *PictureData objects store the actual content in the part directly without keeping a
+     * copy like all others therefore we need to handle them differently.
+     */
+    @Override
     protected void prepareForCommit() {
         // do not clear the part here
     }

Modified: poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java
URL: http://svn.apache.org/viewvc/poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java?rev=1691843&r1=1691842&r2=1691843&view=diff
==============================================================================
--- poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java (original)
+++ poi/branches/common_sl/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java Sun Jul 19 19:00:32 2015
@@ -33,7 +33,6 @@ public final class XWPFRelation extends
      */
     protected static final Map<String, XWPFRelation> _table = new HashMap<String, XWPFRelation>();
 
-
     public static final XWPFRelation DOCUMENT = new XWPFRelation(
             "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml",
             "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",
@@ -41,10 +40,10 @@ public final class XWPFRelation extends
             null
     );
     public static final XWPFRelation TEMPLATE = new XWPFRelation(
-          "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml",
-          "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",
-          "/word/document.xml",
-          null
+            "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml",
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",
+            "/word/document.xml",
+            null
     );
     public static final XWPFRelation MACRO_DOCUMENT = new XWPFRelation(
             "application/vnd.ms-word.document.macroEnabled.main+xml",
@@ -64,12 +63,11 @@ public final class XWPFRelation extends
             "/word/glossary/document.xml",
             null
     );
-        
     public static final XWPFRelation NUMBERING = new XWPFRelation(
-    		"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml",
-    		"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering",
-    		"/word/numbering.xml",
-    		XWPFNumbering.class
+            "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml",
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering",
+            "/word/numbering.xml",
+            XWPFNumbering.class
     );
     public static final XWPFRelation FONT_TABLE = new XWPFRelation(
             "application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml",
@@ -126,10 +124,10 @@ public final class XWPFRelation extends
             null
     );
     public static final XWPFRelation FOOTNOTE = new XWPFRelation(
-           "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml",
-           "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes",
-           "/word/footnotes.xml",
-           XWPFFootnotes.class
+            "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml",
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes",
+            "/word/footnotes.xml",
+            XWPFFootnotes.class
     );
     public static final XWPFRelation ENDNOTE = new XWPFRelation(
             null,
@@ -137,52 +135,51 @@ public final class XWPFRelation extends
             null,
             null
     );
-
     /**
      * Supported image formats
      */
     public static final XWPFRelation IMAGE_EMF = new XWPFRelation(
-          "image/x-emf",
-          "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-          "/word/media/image#.emf",
-          XWPFPictureData.class
-	);
-	public static final XWPFRelation IMAGE_WMF = new XWPFRelation(
-	      "image/x-wmf",
-	      "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-	      "/word/media/image#.wmf",
-	      XWPFPictureData.class
-	);
-	public static final XWPFRelation IMAGE_PICT = new XWPFRelation(
-	      "image/pict",
-	      "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-	      "/word/media/image#.pict",
-	      XWPFPictureData.class
-	);
-	public static final XWPFRelation IMAGE_JPEG = new XWPFRelation(
-	      "image/jpeg",
-	      "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-	      "/word/media/image#.jpeg",
-	      XWPFPictureData.class
-	);
-	public static final XWPFRelation IMAGE_PNG = new XWPFRelation(
-	      "image/png",
-	      "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-	      "/word/media/image#.png",
-	      XWPFPictureData.class
-	);
-	public static final XWPFRelation IMAGE_DIB = new XWPFRelation(
-	      "image/dib",
-	      "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-	      "/word/media/image#.dib",
-	      XWPFPictureData.class
-	);
-	public static final XWPFRelation IMAGE_GIF = new XWPFRelation(
-	      "image/gif",
-	      "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-	      "/word/media/image#.gif",
-	      XWPFPictureData.class
-	);
+            "image/x-emf",
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+            "/word/media/image#.emf",
+            XWPFPictureData.class
+    );
+    public static final XWPFRelation IMAGE_WMF = new XWPFRelation(
+            "image/x-wmf",
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+            "/word/media/image#.wmf",
+            XWPFPictureData.class
+    );
+    public static final XWPFRelation IMAGE_PICT = new XWPFRelation(
+            "image/pict",
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+            "/word/media/image#.pict",
+            XWPFPictureData.class
+    );
+    public static final XWPFRelation IMAGE_JPEG = new XWPFRelation(
+            "image/jpeg",
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+            "/word/media/image#.jpeg",
+            XWPFPictureData.class
+    );
+    public static final XWPFRelation IMAGE_PNG = new XWPFRelation(
+            "image/png",
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+            "/word/media/image#.png",
+            XWPFPictureData.class
+    );
+    public static final XWPFRelation IMAGE_DIB = new XWPFRelation(
+            "image/dib",
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+            "/word/media/image#.dib",
+            XWPFPictureData.class
+    );
+    public static final XWPFRelation IMAGE_GIF = new XWPFRelation(
+            "image/gif",
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+            "/word/media/image#.gif",
+            XWPFPictureData.class
+    );
     public static final XWPFRelation IMAGE_TIFF = new XWPFRelation(
             "image/tiff",
             "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
@@ -207,14 +204,12 @@ public final class XWPFRelation extends
             "/word/media/image#.wpg",
             XWPFPictureData.class
     );
-
-	public static final XWPFRelation IMAGES = new XWPFRelation(
-	      null,
-	      "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
-	      null,
-	      null
-	);	
-
+    public static final XWPFRelation IMAGES = new XWPFRelation(
+            null,
+            "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",
+            null,
+            null
+    );
 
     private XWPFRelation(String type, String rel, String defaultName, Class<? extends POIXMLDocumentPart> cls) {
         super(type, rel, defaultName, cls);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org