control.TimePeriodControl.java Source code

Java tutorial

Introduction

Here is the source code for control.TimePeriodControl.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package control;

import exceptions.ControlException;
import exceptions.DatabaseException;
import java.util.ArrayList;
import model.Employee;
import model.Room;
import model.TimeInvestment;
import model.TimePeriod;
import org.joda.time.LocalDateTime;
import technicalServices.persistence.EmployeeHandler;
import technicalServices.persistence.RoomHandler;
import technicalServices.persistence.TimePeriodHandler;

/* @author Benjamin */
public class TimePeriodControl {

    /**
     * Henter alle tidsperioder ind, og sorterer dem fra der endten ligger uden
     * for currentShift's periode eller ikke refererer til samme employee som
     * currentShift.
     *
     * @param currentShift
     * @return Tidsperioder i currentShift's tidsperiode for currentShift's
     * medarbejder.
     * @throws exceptions.ControlException
     */
    public ArrayList<TimePeriod> getTimeperiods(TimeInvestment currentShift) throws DatabaseException {
        ArrayList<TimePeriod> timePeriods = new ArrayList<>();
        Employee mie = EmployeeHandler.getInstance().getEmployee(31);
        Room mr2 = RoomHandler.getInstance().getRoom("MR 2");
        Room ctA = RoomHandler.getInstance().getRoom("CT A");
        Room ctB = RoomHandler.getInstance().getRoom("CT B");
        LocalDateTime start = new LocalDateTime(2015, 4, 12, 0, 0);
        LocalDateTime end = new LocalDateTime(2015, 4, 18, 0, 0);

        timePeriods.add(new TimePeriod(start, end, 0, 1, mr2, mie));
        timePeriods.add(new TimePeriod(start, end, 1, 3, ctA, mie));
        timePeriods.add(new TimePeriod(start, end, 1, 3, ctB, mie));

        for (int i = 0; i < timePeriods.size(); i++) {
            boolean shiftInPeriod = Xray.getInstance().isDateInPeriod(currentShift.getStartTime(),
                    timePeriods.get(i).getStartTime(), timePeriods.get(i).getEndTime());
            if (!(shiftInPeriod)
                    || timePeriods.get(i).getEmployee().getId() != currentShift.getEmployee().getId()) {
                timePeriods.remove(timePeriods.get(i));
                i--;
            }
        }

        return timePeriods;
    }

    public boolean hasPeriodConstraint(ArrayList<TimePeriod> timePeriods, Room room) {
        boolean hasPeriodConstraint = false;
        for (TimePeriod timePeriod : timePeriods) {
            if (timePeriod.getRoom().getRoomName().equals(room.getRoomName())) {
                hasPeriodConstraint = true;
                break;//OK i sgning.
            }
        }
        return hasPeriodConstraint;
    }

    public ArrayList<TimePeriod> getTimePeriodsForEmp(ArrayList<TimePeriod> timePeriods,
            TimeInvestment currentShift) {

        ArrayList<TimePeriod> timePeriodsForEmp = new ArrayList<>();

        for (TimePeriod timePeriod : timePeriods) {
            boolean shiftInPeriod = Xray.getInstance().isDateInPeriod(currentShift.getStartTime(),
                    timePeriod.getStartTime(), timePeriod.getEndTime());
            if (shiftInPeriod || timePeriod.getEmployee().getId() == currentShift.getEmployee().getId()) {
                timePeriodsForEmp.add(timePeriod);
            }
        }

        return timePeriodsForEmp;
    }

    public void addTimePeriods(ArrayList<TimePeriod> timePeriods) throws DatabaseException {
        TimePeriodHandler.getInstance().addTimePeriods(timePeriods);
    }

}