package fr.adrienbrault.idea.symfony2plugin.doctrine.component; import fr.adrienbrault.idea.symfony2plugin.util.service.AbstractServiceParser; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import java.io.InputStream; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class DocumentNamespacesParser extends AbstractServiceParser { protected Map<String, String> entityNameMap = new ConcurrentHashMap<>(); @Override public String getXPathFilter() { return "/container/services/service[@id[starts-with(.,'doctrine_mongodb.odm.')] or @id[starts-with(.,'doctrine_couchdb.odm.')]]//call[@method='setDocumentNamespaces']//argument[@key]"; } public void parser(InputStream file) { NodeList nodeList = this.parserer(file); if(nodeList == null) { return; } for (int i = 0; i < nodeList.getLength(); i++) { Element node = (Element) nodeList.item(i); this.entityNameMap.put(node.getAttribute("key"), "\\" + node.getTextContent()); } } public Map<String, String> getNamespaceMap() { return entityNameMap; } }