Java tutorial
/** * Copyright 2008 Vctor Enrique Tamames, * Universidad de Valladolid, Espaa. * * This file is part of DelphSim. * * DelphSim is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or any later version. * * DelphSim is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * DelphSim. If not, see <http://www.gnu.org/licenses/>. */ /** * DelphSim (Delphos Simulator), simulador de epidemias desarrollado como * Proyecto Fin de Carrera de Ingeniera Informtica para la Escuela Tcnica * Superior de Ingeniera Informtica de la Universidad de Valladolid. */ package delphsim.model; import java.util.Iterator; import org.dom4j.Element; import org.dom4j.tree.DefaultElement; /** * Los objetos de esta clase representan cada una de las divisiones que pueden * hacerse sobre una poblacin. * @author Vctor E. Tamames Gmez */ public class Division implements Cloneable { /** * El nombre de la divisin. */ private String nombre; /** * Las categoras que existen dentro de esta divisin. */ private Categoria[] categorias = new Categoria[0]; /** * Constructor de la clase. */ public Division() { } /** * Mtodo para cambiar el nombre de la divisin. * @param nombreDiv El nuevo nombre de la divisin. */ public void setNombre(String nombreDiv) { this.nombre = nombreDiv; } /** * Mtodo para obtener el nombre de la divisin. * @return El nombre de la divisin. */ public String getNombre() { return this.nombre; } /** * Mtodo para cambiar las categoras que componen esta divisin. * @param categoriasDiv Las nuevas categoras. */ public void setCategorias(Categoria[] categoriasDiv) { this.categorias = categoriasDiv; } /** * Mtodo para obtener las categoras que componen esta divisin. * @return Las categoras de esta divisin. */ public Categoria[] getCategorias() { return this.categorias; } /** * Mtodo para cargar los datos contenidos en un objeto de tipo * <CODE>org.dom4j.Element</CODE> en este objeto. * @param elementoDivision El objeto <CODE>org.dom4j.Element</CODE>. */ public void cargarDesdeXML(Element elementoDivision) { this.setNombre(elementoDivision.attributeValue("nombre")); this.categorias = new Categoria[elementoDivision.elements("categoria").size()]; int indice = 0; for (Iterator i = elementoDivision.elementIterator("categoria"); i.hasNext();) { Element elementoCategoria = (Element) i.next(); this.categorias[indice] = new Categoria(); this.categorias[indice++].cargarDesdeXML(elementoCategoria); } } /** * Mtodo para volcar los datos de este objeto en uno de tipo * <CODE>org.dom4j.Element</CODE>. * @return El objeto <CODE>org.dom4j.Element</CODE>. */ public Element volcarAXML() { Element elementoDivision = new DefaultElement("division"); elementoDivision.addAttribute("nombre", this.nombre); for (Categoria categ : this.categorias) { elementoDivision.add(categ.volcarAXML()); } return elementoDivision; } /** * Implementacin de la interfaz Cloneable. * @return Un clon idntico a este objeto. */ @Override public Division clone() { int numCateg = this.getCategorias().length; Division clon = new Division(); clon.setNombre(this.getNombre()); clon.setCategorias(new Categoria[numCateg]); for (int i = 0; i < numCateg; i++) { clon.getCategorias()[i] = this.getCategorias()[i].clone(); } return clon; } }