/** * */ package com.rackspace.cloud.loadbalancer.api.parsers; import java.util.ArrayList; import org.xml.sax.Attributes; import org.xml.sax.helpers.DefaultHandler; import android.util.Log; import com.rackspace.cloud.loadbalancer.api.client.ConnectionThrottle; import com.rackspace.cloud.loadbalancer.api.client.LoadBalancer; import com.rackspace.cloud.loadbalancer.api.client.Node; import com.rackspace.cloud.loadbalancer.api.client.VirtualIp; public class LoadBalancersXmlParser extends DefaultHandler { private LoadBalancer loadBalancer; private ArrayList<LoadBalancer> loadBalancers; private ConnectionThrottle connectionThrottle; private VirtualIp virtualIp; private ArrayList<VirtualIp> virtualIps; private Node node; private ArrayList<Node> nodes; private StringBuffer currentData; public void startDocument() { } public void endDocument() { } public void startElement(String uri, String name, String qName, Attributes atts) { currentData = new StringBuffer(); if ("loadBalancers".equals(name)) { loadBalancers = new ArrayList<LoadBalancer>(); } else if ("loadBalancer".equals(name)) { loadBalancer = new LoadBalancer(); loadBalancer.setId(atts.getValue("id")); loadBalancer.setName(atts.getValue("name")); loadBalancer.setProtocol(atts.getValue("protocol")); loadBalancer.setPort(atts.getValue("port")); loadBalancer.setAlgorithm(atts.getValue("algorithm")); loadBalancer.setStatus(atts.getValue("status")); } else if ("connectionLogging".equalsIgnoreCase(name)) { loadBalancer.setIsConnectionLoggingEnabled(atts.getValue("enabled")); } else if ("created".equalsIgnoreCase(name)) { loadBalancer.setCreated(atts.getValue("time")); } else if ("updated".equalsIgnoreCase(name)) { loadBalancer.setCreated(atts.getValue("time")); } else if ("sessionPersistence".equalsIgnoreCase(name)) { loadBalancer.setSessionPersistence(atts.getValue("persistenceType")); } else if ("clusterName".equalsIgnoreCase(name)) { loadBalancer.setClusterName(atts.getValue("clusterName")); } else if ("connectionThrottle".equalsIgnoreCase(name)) { connectionThrottle = new ConnectionThrottle(); connectionThrottle.setMaxConnectionRate(atts.getValue("maxConnectionRate")); connectionThrottle.setMinConnections(atts.getValue("minConnections")); connectionThrottle.setMaxConnections(atts.getValue("maxConnections")); connectionThrottle.setRateInterval(atts.getValue("rateInterval")); loadBalancer.setConnectionThrottle(connectionThrottle); } else if ("virtualIps".equalsIgnoreCase(name)) { virtualIps = new ArrayList<VirtualIp>(); } else if ("virtualIp".equalsIgnoreCase(name)) { virtualIp = new VirtualIp(); virtualIp.setId(atts.getValue("id")); virtualIp.setAddress(atts.getValue("address")); virtualIp.setIpVersion(atts.getValue("ipVersion")); virtualIp.setType(atts.getValue("type")); virtualIp.setLoadBalancer(loadBalancer); } else if ("nodes".equalsIgnoreCase(name)) { nodes = new ArrayList<Node>(); } else if ("node".equalsIgnoreCase(name)) { node = new Node(); node.setId(atts.getValue("id")); node.setAddress(atts.getValue("address")); node.setPort(atts.getValue("port")); node.setCondition(atts.getValue("condition")); node.setStatus(atts.getValue("status")); node.setWeight(atts.getValue("weight")); } } public void endElement(String uri, String name, String qName) { if ("loadBalancers".equals(name)) { // Do nothing } else if ("loadBalancer".equals(name)) { if (loadBalancers != null) { loadBalancers.add(loadBalancer); } } else if ("virtualIps".equalsIgnoreCase(name)) { loadBalancer.setVirtualIps(virtualIps); } else if ("virtualIp".equalsIgnoreCase(name)) { if (virtualIps != null) { virtualIps.add(virtualIp); } } else if ("nodes".equalsIgnoreCase(name)) { loadBalancer.setNodes(nodes); } else if ("node".equalsIgnoreCase(name)) { if (nodes != null) { nodes.add(node); } } } public void characters(char ch[], int start, int length) { Log.d("Rackspace-Cloud", "Characters: \""); for (int i = start; i < start + length; i++) { switch (ch[i]) { case '\\': Log.d("Rackspace-Cloud", "\\\\"); break; case '"': Log.d("Rackspace-Cloud", "\\\""); break; case '\n': Log.d("Rackspace-Cloud", "\\n"); break; case '\r': Log.d("Rackspace-Cloud", "\\r"); break; case '\t': Log.d("Rackspace-Cloud", "\\t"); break; default: Log.d("Rackspace-Cloud", String.valueOf(ch[i])); break; } } Log.d("Rackspace-Cloud", "\"\n"); for (int i = start; i < (start + length); i++) { currentData.append(ch[i]); } } public LoadBalancer getLoadBalancer() { return loadBalancer; } public void setLoadBalancer(LoadBalancer loadBalancer) { this.loadBalancer = loadBalancer; } public ArrayList<LoadBalancer> getLoadBalancers() { return loadBalancers; } public void setLoadBalancers(ArrayList<LoadBalancer> loadBalancers) { this.loadBalancers = loadBalancers; } public VirtualIp getVirtualIp() { return virtualIp; } public void setVirtualIp(VirtualIp virtualIp) { this.virtualIp = virtualIp; } public ArrayList<VirtualIp> getVirtualIps() { return virtualIps; } public void setVirtualIps(ArrayList<VirtualIp> virtualIps) { this.virtualIps = virtualIps; } public Node getNode() { return node; } public void setNode(Node node) { this.node = node; } public ArrayList<Node> getNodes() { return nodes; } public void setNodes(ArrayList<Node> nodes) { this.nodes = nodes; } public StringBuffer getCurrentData() { return currentData; } public void setCurrentData(StringBuffer currentData) { this.currentData = currentData; } }