java-org.hwo.servicelink/src/org/hwo/servicelink/register/basetypes/IndexedList.java

57 lines
1.4 KiB
Java

package org.hwo.servicelink.register.basetypes;
import java.util.Hashtable;
import javax.xml.xpath.XPathConstants;
import org.hwo.servicelink.register.RegisterType;
import org.hwo.xml.NodeListIterator;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class IndexedList extends RegisterType {
Hashtable<java.lang.Integer, String> listItems;
public IndexedList(){
super("IndexedList");
listItems = new Hashtable<java.lang.Integer, String>();
}
@Override
public void createFromTypeNode(Node typeNode) {
try {
NodeList itemNodes = (NodeList)getXPath().evaluate("List/Item", typeNode, XPathConstants.NODESET);
for (Node itemNode: NodeListIterator.create(itemNodes)){
Element itemElement = (Element)itemNode;
java.lang.Integer ind = java.lang.Integer.parseInt( itemElement.getAttribute("index") );
listItems.put(ind, itemElement.getFirstChild().getNodeValue());
}
} catch (Exception e){
e.printStackTrace();
}
}
String getListItem(java.lang.Integer index){
return listItems.get(index);
}
Hashtable<java.lang.Integer, String> getListItems(){
return listItems;
}
@Override
public String getDisplayValue(Object regValue) {
if (listItems.containsKey(valueAsInteger(regValue))){
return listItems.get(valueAsInteger(regValue));
} else {
return String.format("(%d)", valueAsInteger(regValue));
}
}
}