poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From m..@apache.org
Subject svn commit: r947686 - /poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java
Date Mon, 24 May 2010 15:55:30 GMT
Author: msb
Date: Mon May 24 15:55:30 2010
New Revision: 947686

URL: http://svn.apache.org/viewvc?rev=947686&view=rev
Log:
Added overloaded method to support multiple paragraphs in footer/header

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java?rev=947686&r1=947685&r2=947686&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/model/XWPFHeaderFooterPolicy.java Mon May
24 15:55:30 2010
@@ -174,6 +174,8 @@ public class XWPFHeaderFooterPolicy {
 		outputStream.close();
     	return wrapper;
     }
+    
+    
 
     public XWPFFooter createFooter(Enum type) throws IOException {
     	return createFooter(type, null);
@@ -214,14 +216,16 @@ public class XWPFHeaderFooterPolicy {
 
 
 	private CTHdrFtr buildFtr(Enum type, String pStyle, XWPFHeaderFooter wrapper, XWPFParagraph[]
pars) {
-		CTHdrFtr ftr = buildHdrFtr(pStyle, pars);
+		//CTHdrFtr ftr = buildHdrFtr(pStyle, pars);				// MB 24 May 2010
+		CTHdrFtr ftr = buildHdrFtr(pStyle, pars, wrapper);		// MB 24 May 2010
     	setFooterReference(type, wrapper);
 		return ftr;
 	}
 
 
 	private CTHdrFtr buildHdr(Enum type, String pStyle, XWPFHeaderFooter wrapper, XWPFParagraph[]
pars) {
-		CTHdrFtr hdr = buildHdrFtr(pStyle, pars);
+		//CTHdrFtr hdr = buildHdrFtr(pStyle, pars);				// MB 24 May 2010
+		CTHdrFtr hdr = buildHdrFtr(pStyle, pars, wrapper);		// MB 24 May 2010
     	setHeaderReference(type, wrapper);
 		return hdr;
 	}
@@ -231,7 +235,40 @@ public class XWPFHeaderFooterPolicy {
 		if (paragraphs != null) {
 			for (int i = 0 ; i < paragraphs.length ; i++) {
 				CTP p = ftr.addNewP();
-				ftr.setPArray(0, paragraphs[i].getCTP());
+				//ftr.setPArray(0, paragraphs[i].getCTP());		// MB 23 May 2010
+				ftr.setPArray(i, paragraphs[i].getCTP());   	// MB 23 May 2010
+			}
+		}
+		else {
+			CTP p = ftr.addNewP();
+			byte[] rsidr = doc.getDocument().getBody().getPArray()[0].getRsidR();
+			byte[] rsidrdefault = doc.getDocument().getBody().getPArray()[0].getRsidRDefault();
+			p.setRsidP(rsidr);
+			p.setRsidRDefault(rsidrdefault);
+			CTPPr pPr = p.addNewPPr();
+			pPr.addNewPStyle().setVal(pStyle);
+		}
+		return ftr;
+	}
+	
+	/**
+	 * MB 24 May 2010. Created this overloaded buildHdrFtr() method because testing demonstrated
+	 * that the XWPFFooter or XWPFHeader object returned by calls to the createHeader(int, XWPFParagraph[])
+	 * and createFooter(int, XWPFParagraph[]) methods or the getXXXXXHeader/Footer methods where
+	 * headers or footers had been added to a document since it had been created/opened, returned
+	 * an object that contained no XWPFParagraph objects even if the header/footer itself did
contain
+	 * text. The reason was that this line of code; CTHdrFtr ftr = CTHdrFtr.Factory.newInstance();

+	 * created a brand new instance of the CTHDRFtr class which was then populated with data
when
+	 * it should have recovered the CTHdrFtr object encapsulated within the XWPFHeaderFooter
object
+	 * that had previoulsy been instantiated in the createHeader(int, XWPFParagraph[]) or 
+	 * createFooter(int, XWPFParagraph[]) methods.
+	 */
+	private CTHdrFtr buildHdrFtr(String pStyle, XWPFParagraph[] paragraphs, XWPFHeaderFooter
wrapper) {
+		CTHdrFtr ftr = wrapper._getHdrFtr();
+		if (paragraphs != null) {
+			for (int i = 0 ; i < paragraphs.length ; i++) {
+				CTP p = ftr.addNewP();
+				ftr.setPArray(i, paragraphs[i].getCTP());
 			}
 		}
 		else {



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


Mime
View raw message