112 lines
2.6 KiB
Java
112 lines
2.6 KiB
Java
package com.example.harjoitustyo;
|
|
|
|
import java.io.Serializable;
|
|
import java.time.LocalDate;
|
|
|
|
/**
|
|
* Ohjelman perustietoluokka
|
|
*/
|
|
public class Tehtava implements Serializable {
|
|
/**
|
|
* Enum tehtävän tilan seuraamiseen
|
|
*/
|
|
public enum Status {
|
|
Luotu,
|
|
Vaiheessa,
|
|
Valmis
|
|
}
|
|
|
|
private static int idCounter = 1;
|
|
|
|
private final int id;
|
|
private String otsikko;
|
|
private String kuvaus;
|
|
private final LocalDate luontiPaiva;
|
|
private LocalDate deadline;
|
|
private LocalDate valmistumisPaiva;
|
|
private Status tila;
|
|
|
|
/**
|
|
* Luo uuden tehtävän
|
|
* @param otsikko Tehtävän otsikko
|
|
* @param kuvaus Tehtävän kuvaus
|
|
* @param deadline Tehtävän deadline
|
|
*/
|
|
public Tehtava(String otsikko, String kuvaus, LocalDate deadline) {
|
|
this.id = idCounter++;
|
|
this.otsikko = otsikko;
|
|
this.kuvaus = kuvaus;
|
|
this.luontiPaiva = LocalDate.now();
|
|
this.deadline = deadline;
|
|
this.tila = Status.Luotu;
|
|
}
|
|
|
|
/**
|
|
* Asettaa luokan staattisen muuttujan tiettyyn arvoon
|
|
* @param idCounter kentän uusi arvo
|
|
*/
|
|
protected static void setIdCounter(int idCounter) {
|
|
Tehtava.idCounter = idCounter;
|
|
}
|
|
|
|
/**
|
|
* Asettaa tehtävän tilan ja valmistumisPaiva kentän valmistumispäivään
|
|
* @param tila tehtävän uusi tila
|
|
*/
|
|
public void setTila(Status tila) {
|
|
switch (tila) {
|
|
case Luotu:
|
|
this.tila = Status.Luotu;
|
|
this.valmistumisPaiva = null;
|
|
break;
|
|
case Vaiheessa:
|
|
this.tila = Status.Vaiheessa;
|
|
this.valmistumisPaiva = null;
|
|
break;
|
|
case Valmis:
|
|
if (this.tila == Status.Valmis) return; //Jos on jo valmis, ei tehdä mitään
|
|
this.tila = Status.Valmis;
|
|
this.valmistumisPaiva = LocalDate.now();
|
|
}
|
|
}
|
|
|
|
public void setOtsikko(String otsikko) {
|
|
this.otsikko = otsikko;
|
|
}
|
|
|
|
public void setKuvaus(String kuvaus) {
|
|
this.kuvaus = kuvaus;
|
|
}
|
|
|
|
public void setDeadline(LocalDate deadline) {
|
|
this.deadline = deadline;
|
|
}
|
|
|
|
public int getId() {
|
|
return id;
|
|
}
|
|
|
|
public String getOtsikko() {
|
|
return otsikko;
|
|
}
|
|
|
|
public String getKuvaus() {
|
|
return kuvaus;
|
|
}
|
|
|
|
public LocalDate getLuontiPaiva() {
|
|
return luontiPaiva;
|
|
}
|
|
|
|
public LocalDate getDeadline() {
|
|
return deadline;
|
|
}
|
|
|
|
public LocalDate getValmistumisPaiva() {
|
|
return valmistumisPaiva;
|
|
}
|
|
|
|
public Status getTila() {
|
|
return tila;
|
|
}
|
|
} |