use of org.jdom2.xpath.XPathExpression in project pwm by pwm-project.
the class StoredConfigurationImpl method createOrGetSettingElement.
private static Element createOrGetSettingElement(final Document document, final PwmSetting setting, final String profileID) {
final XPathExpression xp = XPathBuilder.xpathForSetting(setting, profileID);
final Element existingSettingElement = (Element) xp.evaluateFirst(document);
if (existingSettingElement != null) {
return existingSettingElement;
}
final Element settingElement = new Element(XML_ELEMENT_SETTING);
settingElement.setAttribute(XML_ATTRIBUTE_KEY, setting.getKey());
settingElement.setAttribute(XML_ATTRIBUTE_SYNTAX, setting.getSyntax().toString());
if (profileID != null && profileID.length() > 0) {
settingElement.setAttribute(XML_ATTRIBUTE_PROFILE, profileID);
}
Element settingsElement = document.getRootElement().getChild(XML_ELEMENT_SETTINGS);
if (settingsElement == null) {
settingsElement = new Element(XML_ELEMENT_SETTINGS);
document.getRootElement().addContent(settingsElement);
}
settingsElement.addContent(settingElement);
return settingElement;
}
use of org.jdom2.xpath.XPathExpression in project pwm by pwm-project.
the class StoredConfigurationImpl method resetLocaleBundleMap.
public void resetLocaleBundleMap(final String bundleName, final String keyName) {
preModifyActions();
domModifyLock.writeLock().lock();
try {
final XPathExpression xp = XPathBuilder.xpathForLocaleBundleSetting(bundleName, keyName);
final List<Element> oldBundleElements = xp.evaluate(document);
if (oldBundleElements != null) {
for (final Element element : oldBundleElements) {
element.detach();
}
}
} finally {
domModifyLock.writeLock().unlock();
}
}
use of org.jdom2.xpath.XPathExpression in project pwm by pwm-project.
the class PwmSettingXml method readCategoryXml.
static Element readCategoryXml(final PwmSettingCategory category) {
final XPathFactory xpfac = XPathFactory.instance();
final XPathExpression xp = xpfac.compile("/settings/category[@key=\"" + category.toString() + "\"]");
return (Element) xp.evaluateFirst(readXml());
}
use of org.jdom2.xpath.XPathExpression in project pwm by pwm-project.
the class PwmSettingXml method readTemplateXml.
static Element readTemplateXml(final PwmSettingTemplate template) {
final XPathFactory xpfac = XPathFactory.instance();
final XPathExpression xp = xpfac.compile("/settings/template[@key=\"" + template.toString() + "\"]");
return (Element) xp.evaluateFirst(readXml());
}
use of org.jdom2.xpath.XPathExpression in project mycore by MyCoRe-Org.
the class MCRMigrationCommands method fixDerivateLinks.
@MCRCommand(syntax = "fix invalid derivate links {0} for {1}", help = "Fixes the paths of all derivate links " + "({0} -> xpath -> e.g. /mycoreobject/metadata/derivateLinks/derivateLink) for object {1}. (MCR-1267)", order = 15)
public static void fixDerivateLinks(String xpath, String id) throws IOException, JDOMException, SAXException {
// get mcr object
MCRObjectID objectID = MCRObjectID.getInstance(id);
// find derivate links
Document xml = MCRXMLMetadataManager.instance().retrieveXML(objectID);
Element mcrObjectXML = xml.getRootElement();
XPathExpression<Element> expression = XPathFactory.instance().compile(xpath, Filters.element());
List<Element> derivateLinkElements = expression.evaluate(mcrObjectXML);
// check them
boolean changedObject = false;
for (Element derivateLinkElement : derivateLinkElements) {
String href = derivateLinkElement.getAttributeValue("href", MCRConstants.XLINK_NAMESPACE);
MCRMetaDerivateLink link = new MCRMetaDerivateLink();
link.setReference(href, null, null);
String owner = link.getOwner();
try {
String path = link.getPath();
MCRPath mcrPath = MCRPath.getPath(owner, path);
if (!Files.exists(mcrPath)) {
// -> e.g. a?c.tif -> path (a), query (c.tif) which is obvious wrong
if (tryRawPath(objectID, derivateLinkElement, href, link, owner)) {
changedObject = true;
} else {
LOGGER.warn("{} of {}cannot be found on file system. This is most likly a dead link.", href, objectID);
}
}
} catch (URISyntaxException uriExc) {
// not encoded properly
if (tryRawPath(objectID, derivateLinkElement, href, link, owner)) {
changedObject = true;
} else {
LOGGER.warn("{} of {} isn't URI encoded and cannot be found on file system. This is most likly a dead link.", href, objectID);
}
}
}
// store the mcr object if its changed
if (changedObject) {
// we use MCRXMLMetadataMananger because we don't want to validate the old mcr object
MCRXMLMetadataManager.instance().update(objectID, xml, new Date());
// manually fire update event
MCRObject newObject = MCRMetadataManager.retrieveMCRObject(objectID);
newObject.setImportMode(true);
MCRMetadataManager.fireUpdateEvent(newObject);
}
}
Aggregations