package de.tudresden.gis.manage.geooperators; import com.esri.gpt.framework.util.Val; import java.io.File; import java.util.ArrayList; import javax.faces.model.SelectItem; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * Implements the container for selectable geooperators. * The code refactors the class Selectable ContentTypes. */ public class SelectableGeooperators { private ArrayList<SelectItem> _list = new ArrayList<SelectItem>(); private String _selectedKey = ""; /** * Constructor */ public SelectableGeooperators() { } /** * Method to get selectable geooperator items as array list. * * @return array list of selectable geooperator items */ public ArrayList<SelectItem> getItems() { return _list; } /** * Method to get key of selected geooperator item (key, value). * * @return key as string */ public String getSelectedKey() { return _selectedKey; } /** * Method to set key of selected geooperator item (key, value). * * @param key as string */ public void setSelectedKey(String key) { _selectedKey = Val.chkStr(key); } /** * Method to build list of selectable geooperators (key, value), which can be used in front end gui. */ public void build() { String path = Thread.currentThread().getContextClassLoader().getResource("gpt/search/browse/browse-catalog.xml").getPath(); try { File fXmlFile = new File(path); DocumentBuilderFactory dbFactory = DocumentBuilderFactory .newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile); doc.getDocumentElement().normalize(); NodeList nList = doc.getElementsByTagName("item"); for (int temp = 0; temp < nList.getLength(); temp++) { Node nNode = nList.item(temp); //System.out.println("\nCurrent Element : " + nNode.getNodeName()); if (nNode.getNodeType() == Node.ELEMENT_NODE) { Element eElement = (Element) nNode; _list.add(new SelectItem( eElement.getElementsByTagName("id").item(0).getTextContent(), eElement.getElementsByTagName("name").item(0).getTextContent())); } } } catch (Exception e) { e.printStackTrace(); } } }