delphsim.model.Division.java Source code

Java tutorial

Introduction

Here is the source code for delphsim.model.Division.java

Source

/** 
 * 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;
    }
}