Package practica1.domain

Source Code of practica1.domain.Experimento

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package practica1.domain;

import java.io.File;
import java.util.ArrayList;
import practica1.domain.event.ExperimentoEvent;
import practica1.domain.listener.ExperimentoListener;
import practica1.util.HashCodeUtil;

/**
* Clase que implementa el modelo de un experimento
* @author Miguel González - Ceura
*/
public class Experimento {
    //Escuchadores de nuestro modelo
    private ArrayList<ExperimentoListener> expListener;
   
    //Objetos del modelo
    private File fichExperimento;
    private String nombreExperimento;
    private String tipoBacteria;
    private String nombreInvestigador;
    private String proyectoInvestigacion;
   
    private int status;
   
    /**
     * Constructor sobrecargado del experimento donde recibe todos los parámetros
     * @param fichExperimento Fichero donde se encuentra el experimento
     * @param nombreExperimento Nombre del experimento
     * @param tipoBacteria Tipo de bacteria del experimento
     * @param nombreInvestigador Nombre del investigador del experimento
     * @param proyectoInvestigacion Proyecto de investigación del experimento
     */
    public Experimento(File fichExperimento, String nombreExperimento,
            String tipoBacteria, String nombreInvestigador,
            String proyectoInvestigacion) {
        //Instanciamos los escuchadores de nuestro modelo
        expListener = new ArrayList<ExperimentoListener>();
       
        //Instanciamos los objetos del modelo
        this.fichExperimento = fichExperimento;
        this.nombreExperimento = nombreExperimento;
        this.tipoBacteria = tipoBacteria;
        this.nombreInvestigador = nombreInvestigador;
        this.proyectoInvestigacion = proyectoInvestigacion;
    }
   
    /**
     * Devuelve el nombre del experimento
     * @return String nombreExperimento
     */
    @Override
    public String toString() {
        return nombreExperimento;
    }
   
    /**
     * Método que compara un objeto con el experimento
     * @param experimento Object Experimento a comparar
     * @return Devuelve verdad si el objeto es un experimento igual,
     * sino falso
     */
    @Override
    public boolean equals(Object experimento) {
        if(experimento != null) {
            if(experimento instanceof Experimento) {
                Experimento ex = (Experimento) experimento;
               
                if(ex.getFichExperimento().equals(fichExperimento) &&
                        ex.getNombreExperimento().equals(nombreExperimento) &&
                        ex.getTipoBacteria().equals(tipoBacteria) &&
                        ex.getNombreInvestigador().equals(nombreInvestigador) &&
                        ex.getProyectoInvestigacion().equals(proyectoInvestigacion)) {
                    return true;
                }
            }
        }
        return false;
    }
   
    /**
     * Devuelve el hashCode del experimento
     * @return int hashCode
     */
    @Override
    public int hashCode() {
        int result = HashCodeUtil.SEED;
       
        result = HashCodeUtil.hash(result, fichExperimento);
        result = HashCodeUtil.hash(result, nombreExperimento);
        result = HashCodeUtil.hash(result, tipoBacteria);
        result = HashCodeUtil.hash(result, nombreInvestigador);
        result = HashCodeUtil.hash(result, proyectoInvestigacion);
       
        return result;
    }
   
    /**
     * Permite suscribirse a los cambios en el experimento
     * @param modeloExperimentoListener ExperimentoListener
     */
    public void addExperimentoListener(ExperimentoListener
            modeloExperimentoListener) {
        expListener.add(modeloExperimentoListener);
    }

    /**
     * Permite desuscribirse a los cambios en el experimento
     * @param modeloExperimentoListener ExperimentoListener
     */
    public void removeExperimentoListener(ExperimentoListener
            modeloExperimentoListener) {
        expListener.remove(modeloExperimentoListener);
    }

    /**
     * @return Devuelve el fichero del experimento
     */
    public File getFichExperimento() {
        return fichExperimento;
    }
   
    /**
     * Establece el nuevo fichero del experimento
     * @param fichExperimento File
     */
    public void setFichExperimento(File fichExperimento) {
        this.fichExperimento = fichExperimento;
        fireExperimentoChange();
    }

    /**
     * @return Devuelve el nombre del experimento
     */
    public String getNombreExperimento() {
        return nombreExperimento;
    }
   
    /**
     * Establece el nombre del experimento
     * @param nombreExperimento Devuelve el nombre del experimento
     */
    public void setNombreExperimento(String nombreExperimento) {
        this.nombreExperimento = nombreExperimento;
        fireExperimentoChange();
    }

    /**
     * Devuelve el tipo de bacteria del experimento
     * @return String tipoBacteria
     */
    public String getTipoBacteria() {
        return tipoBacteria;
    }

    /**
     * Establece el nuevo tipo de bacteria del experimento
     * @param tipoBacteria String
     */
    public void setTipoBacteria(String tipoBacteria) {
        this.tipoBacteria = tipoBacteria;
        fireExperimentoChange();
    }
   
    /**
     * Establece e nuevo nombre del investigador
     * @param nombreInvestigador String
     */
    public void setNombreInvestigador(String nombreInvestigador) {
        this.nombreInvestigador = nombreInvestigador;
        fireExperimentoChange();
    }
   
    /**
     * Devuelve el nombre del investigador del experimento
     * @return String nombreInvestigador
     */
    public String getNombreInvestigador() {
        return nombreInvestigador;
    }
   
    /**
     * Establece el nuevo proyecto de investigación del experimento
     * @param proyectoInvestigacion String
     */
    public void setProyectoInvestigacion(String proyectoInvestigacion) {
        this.proyectoInvestigacion = proyectoInvestigacion;
        fireExperimentoChange();
    }
   
    /**
     * Devuelve el proyecto de investigación del experimento
     * @return String proyectoInvestigacion
     */
    public String getProyectoInvestigacion() {
        return proyectoInvestigacion;
    }
   
    /**
     * @return boolean, estado del experimento, true si ha sido modificado,
     * false sino-
     */
    public int getStatus() {
        return status;
    }

    /**
     * Lanza el evento a todos los escuchadores de que el experimento ha cambiado
     */
    private void fireExperimentoChange() {
        for(ExperimentoListener l : expListener) {
            l.modificadoExperimento(new ExperimentoEvent(this));
        }
    }
}
TOP

Related Classes of practica1.domain.Experimento

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.