package org.argeo.docbook.ui; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; import org.argeo.entity.EntityType; import org.argeo.jcr.Jcr; import org.argeo.jcr.JcrException; import org.argeo.jcr.JcrUtils; import org.argeo.jcr.JcrxApi; /** Utilities around DocBook. */ public class DbkUtils { public static String getTitle(Node node) { return JcrxApi.getXmlValue(node, DocBookTypes.TITLE); } public static void setTitle(Node node, String txt) { try { Node titleNode = JcrUtils.getOrAdd(node, DocBookTypes.TITLE, DocBookTypes.TITLE); JcrxApi.setXmlValue(node, titleNode, txt); } catch (RepositoryException e) { throw new JcrException("Cannot add empty paragraph to " + node, e); } } public static Node getMetadata(Node infoContainer) { try { if (!infoContainer.hasNode(DocBookTypes.INFO)) return null; Node info = infoContainer.getNode(DocBookTypes.INFO); if (!info.hasNode(EntityType.local.get())) return null; return info.getNode(EntityType.local.get()); } catch (RepositoryException e) { throw new JcrException("Cannot retrieve metadata from " + infoContainer, e); } } public static Node getChildByRole(Node parent, String role) { try { NodeIterator baseSections = parent.getNodes(); while (baseSections.hasNext()) { Node n = baseSections.nextNode(); String r = Jcr.get(n, DocBookNames.DBK_ROLE); if (r != null && r.equals(role)) return n; } return null; } catch (RepositoryException e) { throw new JcrException("Cannot get child from " + parent + " with role " + role, e); } } public static Node addParagraph(Node node, String txt) { try { Node para = node.addNode(DocBookTypes.PARA, DocBookTypes.PARA); JcrxApi.setXmlValue(node, para, txt); return para; } catch (RepositoryException e) { throw new JcrException("Cannot add empty paragraph to " + node, e); } } /** Singleton. */ private DbkUtils() { } }