// Path: java2word/src/main/java/word/api/interfaces/IElement.java
// public interface IElement {
// 
// 	/**
// 	 * <p>This method returns the content (XML or HTML) of the Element and the content.</p>
// 	 * <p>If you are using W2004, the return will be the XML required to generate the element.</p>
// 	 *
// 	 * <p>Important: Once you call this method, the Document value is cached an no elements can be added later.</p>
// 	 *
// 	 * @return this is the String value of the element ready to be appended/inserted in the Document.<br>
// 	 *
// 	 * <p>This is the XML that generates a <code>BreakLine</code>:</p>
// 	 * <code>
// 	 *  <w:p wsp:rsidR='008979E8' wsp:rsidRDefault='008979E8'/>
// 	 * </code>
// 	 */
// 	public String getContent();
// 
// }
// 
// Path: java2word/src/main/java/word/w2004/elements/tableElements/ITableItemStrategy.java
// public interface ITableItemStrategy{
// 	public String getTop();
// 	public String getMiddle();
// 	public String getBottom();
// }
// 
// Path: java2word/src/main/java/word/w2004/elements/tableElements/TableEle.java
// public enum TableEle{	
// 	TH("th"), TD("td"), TF("tf"), TABLE_DEF("tableDef"); //TR("tr"),
// 
// 	private String value;
// 	
// 	TableEle(String value){
// 		this.value = value;
// 	}
// 	
// 	public String getValue(){
// 		return this.value;
// 	}
// 	
// };
// 
// Path: java2word/src/main/java/word/w2004/elements/tableElements/TableFactoryMethod.java
// public class TableFactoryMethod {
// 
// 	private static TableFactoryMethod instance;
// 
// 	private TableFactoryMethod() {
// 	}
// 
// 	public static TableFactoryMethod getInstance() {
// 		if (instance == null) {
// 			instance = new TableFactoryMethod();
// 		}
// 		return instance;
// 	}
// 
// 	public ITableItemStrategy getTableItem(TableEle tableEle) {
// 		if (tableEle == null) {
// 			return null;	
// 		} 
// 		
// 		return getTableEle(tableEle);
// 	}
// 
// 	private ITableItemStrategy getTableEle(TableEle tableEle) {
// 		if (tableEle.getValue().equals("tableDef")) {
// 			return new TableDefinition();
// 		}else if (tableEle.getValue().equals("th")) {
// 			return new TableHeader();
// 		}else if (tableEle.getValue().equals("td")) {
// 			return new TableCol();
// 		}else { //if (tableEle.getValue().equals("tf")) {
// 			return new TableFooter();
// 		}
// 	}
// 
// }


import word.api.interfaces.IElement;
import word.w2004.elements.tableElements.ITableItemStrategy;
import word.w2004.elements.tableElements.TableEle;
import word.w2004.elements.tableElements.TableFactoryMethod;
package word.w2004.elements;


/**
 * @author leonardo_correa
 * 
 */
public class Table implements IElement {

    StringBuilder txt = new StringBuilder("");
    private boolean hasBeenCalledBefore = false; // if getContent has already
                                                 // been called, I cached the
                                                 // result for future
                                                 // invocations
    private boolean isRepeatTableHeaderOnEveryPage = false;

    public String getContent() {
        if ("".equals(txt.toString())) {
            return "";
        }
        if (hasBeenCalledBefore) {
            return txt.toString();
        } else {
            hasBeenCalledBefore = true;
        }

        ITableItemStrategy tableDef = TableFactoryMethod.getInstance()
// Path: java2word/src/main/java/word/api/interfaces/IElement.java
// public interface IElement {
// 
// 	/**
// 	 * <p>This method returns the content (XML or HTML) of the Element and the content.</p>
// 	 * <p>If you are using W2004, the return will be the XML required to generate the element.</p>
// 	 *
// 	 * <p>Important: Once you call this method, the Document value is cached an no elements can be added later.</p>
// 	 *
// 	 * @return this is the String value of the element ready to be appended/inserted in the Document.<br>
// 	 *
// 	 * <p>This is the XML that generates a <code>BreakLine</code>:</p>
// 	 * <code>
// 	 *  <w:p wsp:rsidR='008979E8' wsp:rsidRDefault='008979E8'/>
// 	 * </code>
// 	 */
// 	public String getContent();
// 
// }
// 
// Path: java2word/src/main/java/word/w2004/elements/tableElements/ITableItemStrategy.java
// public interface ITableItemStrategy{
// 	public String getTop();
// 	public String getMiddle();
// 	public String getBottom();
// }
// 
// Path: java2word/src/main/java/word/w2004/elements/tableElements/TableEle.java
// public enum TableEle{	
// 	TH("th"), TD("td"), TF("tf"), TABLE_DEF("tableDef"); //TR("tr"),
// 
// 	private String value;
// 	
// 	TableEle(String value){
// 		this.value = value;
// 	}
// 	
// 	public String getValue(){
// 		return this.value;
// 	}
// 	
// };
// 
// Path: java2word/src/main/java/word/w2004/elements/tableElements/TableFactoryMethod.java
// public class TableFactoryMethod {
// 
// 	private static TableFactoryMethod instance;
// 
// 	private TableFactoryMethod() {
// 	}
// 
// 	public static TableFactoryMethod getInstance() {
// 		if (instance == null) {
// 			instance = new TableFactoryMethod();
// 		}
// 		return instance;
// 	}
// 
// 	public ITableItemStrategy getTableItem(TableEle tableEle) {
// 		if (tableEle == null) {
// 			return null;	
// 		} 
// 		
// 		return getTableEle(tableEle);
// 	}
// 
// 	private ITableItemStrategy getTableEle(TableEle tableEle) {
// 		if (tableEle.getValue().equals("tableDef")) {
// 			return new TableDefinition();
// 		}else if (tableEle.getValue().equals("th")) {
// 			return new TableHeader();
// 		}else if (tableEle.getValue().equals("td")) {
// 			return new TableCol();
// 		}else { //if (tableEle.getValue().equals("tf")) {
// 			return new TableFooter();
// 		}
// 	}
// 
// }


// Path: java2word/src/main/java/word/w2004/elements/Table.java
import word.api.interfaces.IElement;
import word.w2004.elements.tableElements.ITableItemStrategy;
import word.w2004.elements.tableElements.TableEle;
import word.w2004.elements.tableElements.TableFactoryMethod;

package word.w2004.elements;


/**
 * @author leonardo_correa
 * 
 */
public class Table implements IElement {

    StringBuilder txt = new StringBuilder("");
    private boolean hasBeenCalledBefore = false; // if getContent has already
                                                 // been called, I cached the
                                                 // result for future
                                                 // invocations
    private boolean isRepeatTableHeaderOnEveryPage = false;

    public String getContent() {
        if ("".equals(txt.toString())) {
            return "";
        }
        if (hasBeenCalledBefore) {
            return txt.toString();
        } else {
            hasBeenCalledBefore = true;
        }

        ITableItemStrategy tableDef = TableFactoryMethod.getInstance()
                .getTableItem(TableEle.TABLE_DEF);