private InfoDirective buildInfoDirective(Element element) { if (null == element) { return null; } else { String title = ElementHelper.getAttribute(element, "title"); Element child = ElementHelper.getChild(element, "description"); if (null == child) { return new InfoDirective(title, null); } else { String value = ElementHelper.getValue(child); String description = trim(value); return new InfoDirective(title, description); } } }
private ResourceDirective buildResourceDirective(File base, Element element, String path) throws Exception { Classifier classifier = null; final String tag = element.getTagName(); if (RESOURCE_ELEMENT_NAME.equals(tag) || PROJECT_ELEMENT_NAME.equals(tag) || MODULE_ELEMENT_NAME.equals(tag)) { final String name = ElementHelper.getAttribute(element, "name"); final String version = ElementHelper.getAttribute(element, "version"); String basedir = ElementHelper.getAttribute(element, "basedir"); if (path != null) { if (basedir == null) { basedir = path; } else { basedir = path + "/" + basedir; } } if (PROJECT_ELEMENT_NAME.equals(tag)) { classifier = Classifier.LOCAL; if (null == basedir) { basedir = "."; } } else if (MODULE_ELEMENT_NAME.equals(tag)) { if (null != basedir) { classifier = Classifier.LOCAL; } else { classifier = Classifier.EXTERNAL; } } else { classifier = Classifier.EXTERNAL; } final boolean export = ElementHelper.getBooleanAttribute(element, "export", true); final InfoDirective info = buildInfoDirective(ElementHelper.getChild(element, "info")); final TypeDirective[] data = buildTypeDirectives(ElementHelper.getChild(element, "types")); final DependencyDirective[] dependencies = buildDependencyDirectives(ElementHelper.getChild(element, "dependencies")); final FilterDirective[] filters = buildFilterDirectives(ElementHelper.getChild(element, "filters")); final Properties properties = buildProperties(ElementHelper.getChild(element, "properties")); if (MODULE_ELEMENT_NAME.equals(tag)) { File anchor = getAnchorDirectory(base, basedir); ArrayList<ResourceDirective> list = new ArrayList<ResourceDirective>(); Element[] children = ElementHelper.getChildren(element); for (int i = 0; i < children.length; i++) { Element child = children[i]; final String t = child.getTagName(); if (RESOURCE_ELEMENT_NAME.equals(t) || PROJECT_ELEMENT_NAME.equals(t) || MODULE_ELEMENT_NAME.equals(t)) { ResourceDirective directive = buildResourceDirectiveFromElement(anchor, child, null); list.add(directive); } } ResourceDirective[] resources = list.toArray(new ResourceDirective[0]); return ModuleDirective.createModuleDirective( name, version, classifier, basedir, info, data, dependencies, properties, filters, resources, export); } else { return ResourceDirective.createResourceDirective( name, version, classifier, basedir, info, data, dependencies, properties, filters, export); } } else { final String error = "Invalid element name [" + tag + "]."; throw new DecodingException(error, null, element); } }