package org.businessmanager.service.docgen; import java.io.StringWriter; import java.util.List; import org.docx4j.TextUtils; import org.docx4j.TraversalUtil; import org.docx4j.XmlUtils; import org.docx4j.wml.Text; import org.jvnet.jaxb2_commons.ppp.Child; public class Docx4jUtil { @SuppressWarnings("unchecked") public static <T> T getParentOfType(Child child, Class<T> parentClass) { Object parent = child.getParent(); if (parent == null) { return null; } if (parent.getClass().equals(parentClass)) { return (T) parent; } if (parent instanceof Child) { return getParentOfType((Child) parent, parentClass); } return null; } public static void substituteText(Object object, String text) { List<Object> children = getChildren(object); if (children != null) { for (Object child : children) { child = XmlUtils.unwrap(child); if (child instanceof Text) { ((Text) child).setValue(text); } else { substituteText(child, text); } } } } public static List<Object> getChildren(Object o) { return TraversalUtil.getChildrenImpl(o); } public static String extractText(Object obj) { StringWriter sw = new StringWriter(); try { TextUtils.extractText(obj, sw); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return sw.getBuffer().toString(); } }