/* * AnimalHandler.java * * Created on: 17-Mar-2010 * */ package netukar.animalia.xml; import java.util.LinkedList; import java.util.List; import netukar.animalia.Animal; import netukar.animalia.Conservation; import org.xml.sax.Attributes; import org.xml.sax.helpers.DefaultHandler; /** * * @author Radovan Netuka */ public class AnimalHandler extends DefaultHandler { private String buffer; private Animal result; private List range; public Animal getResult() { return result; } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) { if (localName.equals("animal")) { result = new Animal(); range = new LinkedList(); } } @Override public void characters(char[] chars, int start, int length) { buffer = String.copyValueOf(chars, start, length); } @Override public void endElement(String uri, String localName, String qName) { if (localName.equals("genus")) { result.setGenus(buffer); } else if (localName.equals("species")) { result.setSpecies(buffer); } else if (localName.equals("conservation")) { result.setConservation(Conservation.valueOf(buffer)); } else if (localName.equals("weight-min")) { result.setMinimalWeight(Integer.parseInt(buffer)); } else if (localName.equals("weight-max")) { result.setMaximalWeight(Integer.parseInt(buffer)); } else if (localName.equals("heigth-min")) { result.setMinimalHeight(Double.parseDouble(buffer)); } else if (localName.equals("heigth-max")) { result.setMaximalHeight(Double.parseDouble(buffer)); } else if (localName.equals("range")) { range.add(buffer); } else if (localName.equals("animal")) { result.setRange(range.toArray(new String[0])); } } }