/** * Method that find all subtemplates in templates node. */ private void findSubTemplates(Node node, InstallContext installContext) throws RepositoryException, TaskExecutionException { if (node.hasNode(SUBTEMPLATES)) { if (!node.hasNode(VARIATION)) { transformSubTemplatesToVariations(node, installContext); return; } final String warningMessage = String.format("Can't transform subtemplates of '%s' to variations, because variations already exist.", node.getPath()); new WarnTask("Transform subtemplates to variations", warningMessage).execute(installContext); return; } if (node.hasNodes()) { NodeIterator nodeIterator = node.getNodes(); while (nodeIterator.hasNext()) { findSubTemplates(nodeIterator.nextNode(), installContext); } } }
/** * Method that transform subtemplates to variations. */ private void transformSubTemplatesToVariations(Node node, InstallContext installContext) throws RepositoryException, TaskExecutionException { NodeIterator subTemplatesNodeIterator = node.getNode(SUBTEMPLATES).getNodes(); while (subTemplatesNodeIterator.hasNext()) { Node subTemplatesNode = subTemplatesNodeIterator.nextNode(); if (!subTemplatesNode.getName().equals("MetaData")) { if (subTemplatesNode.hasProperty("templatePath") && subTemplatesNode.hasProperty("type")) { PropertyUtil.renameProperty(subTemplatesNode.getProperty("templatePath"), "templateScript"); PropertyUtil.renameProperty(subTemplatesNode.getProperty("type"), "renderType"); if (subTemplatesNode.hasProperty("extension")) { NodeUtil.renameNode(subTemplatesNode, subTemplatesNode.getProperty("extension").getString()); subTemplatesNode.getProperty("extension").remove(); } } else { final String warningMessage = String.format("Subtemplate of '%s' has missing required property, can't transform this subtemplate properly. Please edit it in '%s/variations'.", subTemplatesNode.getName(), node.getPath()); new WarnTask("Transform subtemplates to variations", warningMessage).execute(installContext); } } } NodeUtil.renameNode(node.getNode(SUBTEMPLATES), VARIATION); } };