package xesj.app.xpath;
import java.util.Collections;
import java.util.Iterator;
import javax.xml.XMLConstants;
import javax.xml.namespace.NamespaceContext;

/**
 * Könyv namespace context.
 * Azért van rá szükség, mert az xml kettőspontos tag neveket tartalmaz, ahol a kettőspont előtt a namespace név van.
 * Ha ezeket a namespace-eket nem definiáljuk, akkor az XML-ben nem lehetne megtalálni az elemeket.
 */
public class KonyvNamespaceContext implements NamespaceContext {

  /**
   * Namespace név - URI összerendelés beállítása
   * Pontosan azokat az URI-kat kell visszadnia, ami az xml-ben van!
   */
  @Override
  public String getNamespaceURI(String prefix) {
    return switch (prefix) {
      case "x"      ->  "http://pelda.hu/konyvek"; // Tetszőleges név a gyökér elemnek, az xpath-ban ezt használhatjuk
      case "kiado"  ->  "http://pelda.hu/kiado";
      case "stat"   ->  "http://pelda.hu/stat";
      default       ->  XMLConstants.NULL_NS_URI;  
    };
  }

  /**
   * getPrefix()
   */
  @Override
  public String getPrefix(String namespaceURI) {
    return null;
  }

  /**
   * getPrefixes()
   */
  @Override
  public Iterator<String> getPrefixes(String namespaceURI) {
    return Collections.emptyIterator();
  }
  
}
