package com.plannaplan.entities; import java.sql.Date; import java.sql.Timestamp; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import com.plannaplan.models.TourData; import com.plannaplan.types.AppState; /** * entity that keeps app configurations */ @Entity public class AppConfig { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private Date firstTourStart; private Date firstTourEnd; private Date secondTourStart; private Date secondTourEnd; private Timestamp configDate; /** * no parameter construcotor */ public AppConfig() { } /** * constructor * * @param firstTour first TourData instacne * @param scondTour second TourData instacne */ public AppConfig(TourData firstTour, TourData scondTour) { this.firstTourStart = firstTour.getStart(); this.firstTourEnd = firstTour.getEnd(); this.secondTourStart = scondTour.getStart(); this.secondTourEnd = scondTour.getEnd(); this.configDate = new Timestamp(System.currentTimeMillis()); } /** * * second tour end getter * * @return Date inforamtion when second tour ends */ public Date getSecondTourEnd() { return secondTourEnd; } /** * first second start getter * * @return Date inforamtion when second tour start */ public Date getSecondTourStart() { return secondTourStart; } /** * first tour end getter * * @return Date inforamtion when first tour end */ public Date getFirstTourEnd() { return firstTourEnd; } /** * first tour start getter * * @return Date inforamtion when first tour start */ public Date getFirstTourStart() { return firstTourStart; } /** * config date getter * * @return Timestamp when configuration took place */ public Timestamp getConfigDate() { return configDate; } /** * current state getter * * @return AppState of app at the moment of calling method */ public AppState getCurrentState() { final Date now = new Date(System.currentTimeMillis()); if (this.secondTourEnd.before(now)) { return AppState.NO_TOUR; } if (this.secondTourStart.before(now)) { return AppState.SECOND_TOUR; } if (this.firstTourEnd.before(now)) { return AppState.NO_TOUR; } if (this.firstTourStart.before(now)) { return AppState.FIRST_TOUR; } return AppState.NO_TOUR; } }