Dispositivo.java

 avatar
unknown
java
2 months ago
4.0 kB
6
Indexable
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Objects;
import java.io.Serializable;

public abstract class Dispositivo implements Serializable {

    private static final long serialVersionUID = 1L;
    private String id;
    private String marca;
    private String modelo;
    private double consumoBase;
    private boolean estado;
    private long tempoTotalUso;
    private LocalDateTime dataUltimaAtivacao;
    private int numAtivacoes;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getMarca() {
        return marca;
    }

    public void setMarca(String marca) {
        this.marca = marca;
    }

    public String getModelo() {
        return modelo;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public double getConsumoBase() {
        return consumoBase;
    }

    public void setConsumoBase(double consumoBase) {
        this.consumoBase = consumoBase;
    }

    public boolean getEstado() {
        return estado;
    }

    public void ligar(LocalDateTime tempoAtual) {
        if (!this.estado) {
            this.estado = true;
            this.dataUltimaAtivacao = tempoAtual;
            this.numAtivacoes++;
        }
    }

    public void desligar(LocalDateTime tempoAtual) {
        if (this.estado && this.dataUltimaAtivacao != null) {
            this.estado = false;
            long minutosLigado = ChronoUnit.MINUTES.between(this.dataUltimaAtivacao, tempoAtual);
            this.tempoTotalUso += minutosLigado;
        }
    }

    public long getTempoTotalUso() {
        return tempoTotalUso;
    }

    public double getConsumoEnergia() {
        return (this.consumoBase * (this.tempoTotalUso / 60.0));
    }

    public int getNumAtivacoes() {
        return numAtivacoes;
    }

    public Dispositivo() {
        this.id = "";
        this.marca = "";
        this.modelo = "";
        this.consumoBase = 0.0;
        this.estado = false;
        this.tempoTotalUso = 0;
        this.numAtivacoes = 0;
    }

    public Dispositivo(String id, String marca, String modelo, double consumoBase) {
        this.id = id;
        this.marca = marca;
        this.modelo = modelo;
        this.consumoBase = consumoBase;
        this.estado = false;
        this.tempoTotalUso = 0;
        this.numAtivacoes = 0;
    }

    public Dispositivo(Dispositivo umDispositivo) {
        this.id = umDispositivo.getId();
        this.marca = umDispositivo.getMarca();
        this.modelo = umDispositivo.getModelo();
        this.consumoBase = umDispositivo.getConsumoBase();
        this.estado = umDispositivo.getEstado();
        this.tempoTotalUso = umDispositivo.getTempoTotalUso();
        this.dataUltimaAtivacao = umDispositivo.dataUltimaAtivacao;
        this.numAtivacoes = umDispositivo.numAtivacoes;
    }

    @Override
    public abstract Dispositivo clone();

    protected String toStringBase() {
    return "id='" + getId() + '\'' +
           ", marca='" + getMarca() + '\'' +
           ", modelo='" + getModelo() + '\'' +
           ", estado=" + (getEstado() ? "Ligado" : "Desligado") +
           ", numAtivacoes=" + numAtivacoes +
           ", tempoTotalUso=" + tempoTotalUso + "min";
}

    @Override
    public abstract String toString();

    @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        Dispositivo dis = (Dispositivo) o;
        return this.id.equals(dis.id) &&
               this.marca.equals(dis.marca) &&
               this.modelo.equals(dis.modelo) &&  
               this.estado == dis.estado &&
               this.numAtivacoes == dis.numAtivacoes &&
               this.tempoTotalUso == dis.tempoTotalUso;
    }

    @Override
    public int hashCode() {
        return Objects.hash(id);
    }

}
Editor is loading...
Leave a Comment