+ 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);
+ }
+ }
+